/ / ¿Cómo copiar datos a otra tabla y evitar conflictos de clave? - php, mysql, base de datos

¿Cómo copiar datos a otra tabla y evitar conflictos clave? - php, mysql, base de datos

Estoy construyendo una aplicación en PHP / MySQL. Contiene 2 bases de datos. La base de datos 1 se utiliza para almacenar temporalmente pedidos del usuario final. Una vez que el usuario haya confirmado el pedido, se copiará en la base de datos 2 en 2 tablas con un SELECCIONAR ... INSERTAR. Luego, las tablas en la base de datos 1 se limpiarán para que el usuario pueda proceder con un nuevo pedido. En otras palabras, las tablas en la base de datos 1 nunca mantendrán más de 1 orden en un momento dado. Las dos tablas contienen el pedido y sus elementos correspondientes respectivamente. Las estructuras de la tabla son idénticas tanto en la base de datos 1 como en la base de datos 2. Cuando los artículos que pertenecen a un pedido se transfieren a la tabla en la base de datos 2, habrá un conflicto clave.

Pregunta 1: ¿Cuál es la mejor manera de resolver este conflicto clave?

Intenté seleccionar las columnas explícitamente exceptoPara la clave, pero esto no resuelve el problema por completo. Sería bueno usar una consulta INSERT INTO db2.table (SELECT * FROM db1.table) para transferir estos datos en lugar de tener que mencionar todas las columnas explícitamente.

Además, cuando el usuario quiere editar el actualregistrar justo después de que se haya volcado en la base de datos 2, no es posible porque las tablas en la base de datos 1 y la base de datos 2 no se pueden vincular. Además, el registro se puede insertar dos veces en la base de datos 2.

Pregunta 2: ¿Cómo puede el usuario editar el registro actual sin tener que salir del menú y buscar el registro en las tablas de la base de datos 2?

Pregunta 3: ¿Cómo puedo evitar INSERTAR el mismo registro dos veces en las tablas en la base de datos 2?

Este diseño con 2 bases de datos fue elegido porqueDel enfoque modular del proyecto. Además, la base de datos 2 está separada de la base de datos 1, lo que significa que no pueden interferir. Y, dado que la base de datos está dividida en 2 partes, es más fácil programar dos trozos pequeños en lugar de uno grande.

Respuestas

0 para la respuesta № 1

Tener 2 bases de datos no es una mala idea.

Me acercaría a esto con la "clave externa"Relación entre el concepto de 2 tablas. Cuando inserte todos los contenidos del registro db1 en db2, agregue un nuevo campo de "clave externa" a db2 (db2_fkey) que contiene la "clave principal" del registro db1.

De esta manera puedes leer registros en db2 y relacionartevolver al registro en db1 usando db2_fkey. Podrá determinar que el registro se ha borrado de db1. También podrá tener más de 1 registro en db2 con el mismo valor en el campo db2_fkey. Hay un procesamiento automático en MySQL con una clave foránea entre 2 tablas que tendrá que codificar manualmente con este enfoque (como eliminar registros de ambas tablas). Pero este enfoque de relación debe responder a sus preguntas de aplicación.