2010-02-03 23 views

Respuesta

9

No, no puede realizar múltiples inserciones en dos tablas en una consulta.

2

Tal vez en una versión futura de MySQL se puede crear una vista que contiene las tablas 2 y se insertan en eso.
Pero con MySQL 5.1.41 obtendrá el error:
"No se puede modificar más de una tabla de base mediante una vista conjunta"

Pero la inserción en 2 mesas con 1 consulta es una cosa extraña a do, y No lo recomiendo.


Para obtener más información sobre las vistas actualizables, consulte el MySQL reference.

+0

No es raro que desee actualizar (o insertar en) varias tablas como parte de una sola atómica (es decir, de todo o nada sucede) operación. Cuanto más normalizada sea su base de datos, más probable será la necesidad. Solo necesita proteger las múltiples actualizaciones en una transacción de db. –

+0

Es cierto, pero cuando veo una instrucción de inserción * simple, supongo que solo 1 tabla se ve afectada. La parte "extraña" se aplica al aspecto de consulta 1. –

3

Puede llamar a un procedimiento almacenado con inserciones en dos tablas.

+0

La respuesta es sí y así es como lo haces. Es útil cuando tiene una latencia prolongada en su BD para combinar varias inserciones en una sola declaración. – Mark

4

No, no puedes.

Si desea garantizar la atomicidad de una operación que requiere datos a insertar en las tablas 2, debe protegerlo en una transacción. O bien usa las sentencias SQL BEGIN TRAN y COMMIT TRAN, o usa un límite de transacción en cualquier idioma que esté utilizando para desarrollar la capa de acceso db. P.ej. algo así como Connection.StartTransaction y Connection.Commit (o Connection.Rollback en un error).

Cuestiones relacionadas