Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   INSERT multimple (https://www.clubdelphi.com/foros/showthread.php?t=59218)

MaMu 18-08-2008 05:10:32

INSERT multimple
 
Tengo estas dos tablas:

TABLA1
=====
idtabla1pk
idtabla2
campo1
campo2

TABLA2
=====
idtabla2pk
campo1

Cómo se hace para hacer un INSERT simultaneamente en ambas tablas?
Tengo que cumplir con la condición de que TABLA1.idtabla2=TABLA1.idtabla1pk, por lo que TABLA2.idtabla2pk, tendría que tener el mismo valor.

Alguna idea?

Saludos y gracias

tcp_ip_es 18-08-2008 12:58:31

¿Que BD utilizas? ...todo depende.... en principio no hay una orden que haga inserts múltiples en varias tablas.... pero tu puedes lanzar un insert y asociarle un trigger para que inserte en otra tabla, eso mediante programación en la propia bd, otra opción es mediante código en delphi, yo haría dos insert dentro de un try .. except con sus correspondientes begin y end transaction y en caso de fallo lanzar un rollback..... no se si estaré en lo cierto que los compis foreros se lancen a la piscina :D

MaMu 18-08-2008 17:49:05

Cita:

Empezado por tcp_ip_es (Mensaje 308115)
¿Que BD utilizas? ...todo depende.... en principio no hay una orden que haga inserts múltiples en varias tablas.... pero tu puedes lanzar un insert y asociarle un trigger para que inserte en otra tabla, eso mediante programación en la propia bd, otra opción es mediante código en delphi, yo haría dos insert dentro de un try .. except con sus correspondientes begin y end transaction y en caso de fallo lanzar un rollback..... no se si estaré en lo cierto que los compis foreros se lancen a la piscina :D

Bueno, yo lo hice encerrándo a los dos INSERT entre un try .. except, utilizo mySQL 5 (D7 y Zeos 6, este último en autocommit), de hecho, usaba mySQL 4.1, pero como desde la versión 5 han implementado los storeprocedures y los views, he decidido que no tiene sentido seguir usando la 4.1. Aún estoy analizando la implementación de SP, Triggers, etc., ya que intento cerrar la aplicación independientemente de la Base de Datos (la idea es hacerla compatible con MS-SQLServer/mySQL/Firebird).

Saludos

BlueSteel 18-08-2008 18:02:05

Cuano he tenido que realizar un insert similar a lo que tu planteas lo he realizado de 2 formas...

una es utilizando trigger (desde SQL Server) y la otra es programandolo en Delphi...

Tambien he tenido que realizar la inserción masiva y lo realizo tambien programandolo desde delphi...

como los insert los realizao a traves de AdoQuery, lo que hago es realizar 2 AdoQuery. El primero me realiza el insert en la primera tabla y el segundo me realiza el insert en la segunda tabla.

Con el uso del Trigger es más cómodo y funcional, ya que a penas se detecta la inserción de un registro, se dispara un trigger que realizará lo que le diga, en este caso insertará un registro en otra tabla.

Al menos en SQL Server cuando se realizan inserciones de varios registros a la vez se hace necesario el uso de cursores, de lo contrario solo registrar la inserción de 1 registro (no se si será el primero que se inserto o el último).

Salu2:p:D


La franja horaria es GMT +2. Ahora son las 02:03:38.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi