Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-08-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
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
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #2  
Antiguo 18-08-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
¿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
Responder Con Cita
  #3  
Antiguo 18-08-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por tcp_ip_es Ver Mensaje
¿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
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
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #4  
Antiguo 18-08-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Wink

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
__________________
BlueSteel
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Insert into jerosol SQL 21 14-03-2007 19:58:40
insert into... supermilloriver Conexión con bases de datos 4 05-01-2006 00:25:52
insert into Nelly SQL 3 14-10-2005 17:54:00
Insert me cierra otro Insert motrildelphi Conexión con bases de datos 0 05-05-2005 12:20:27
Insert Con Ibx AGAG4 Conexión con bases de datos 8 09-09-2004 20:29:15


La franja horaria es GMT +2. Ahora son las 02:25:34.


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
Copyright 1996-2007 Club Delphi