
Borrar registro de dos tablas al mismo tiempo
Comenzado por
luk2009
, mar 17 2012 08:26
9 respuestas en este tema
#1
Escrito 17 marzo 2012 - 08:26
Hay alguna forma de borrar registros de dos tablas al mismo tiempo con una consulta sql.
#2
Escrito 17 marzo 2012 - 10:40
Hola
No es algo así ?
Saludos
No es algo así ?
Delete * from Tabla1, Tabla2 where Dato = :dat
Saludos
#3
Escrito 17 marzo 2012 - 10:46
Gracias Caral por responder.
En IBExpert me da error con la coma entre las tablas. osea que no lo acepta asi.
En IBExpert me da error con la coma entre las tablas. osea que no lo acepta asi.
#4
Escrito 17 marzo 2012 - 10:58
Hola, si tu caso es que las dos tablas están relacionadas, puedes configurar la llave foranea que establece la relación entre las dos tablas para que la regla de actualización te permita borrado en cascada. Si las tablas no están relacionadas te tocaría hacer un borrado para la primera tabla y luego un borrado para la segunda, otra opción sería que hicieras un procedimiento almacenado que reciba como parametro el dato y en el cuerpo del procedimiento hiiceras los borrados.
#5
Escrito 17 marzo 2012 - 11:09
Saludos.
Tal como apunta lbuelvas para hacerlo con una solo sentencia de Delete debe existir una relación entre las dos tablas y que la clave foránea permita borrado en cascada; de lo contrario te tocaría escribir las dos sentencias.
Aun con el procedimiento almacenado, el cuerpo contendría ambas sentencias en el fondo.
Tal como apunta lbuelvas para hacerlo con una solo sentencia de Delete debe existir una relación entre las dos tablas y que la clave foránea permita borrado en cascada; de lo contrario te tocaría escribir las dos sentencias.
Aun con el procedimiento almacenado, el cuerpo contendría ambas sentencias en el fondo.
#6
Escrito 17 marzo 2012 - 11:37
abre el ibExpert, luego te vas al menu de archivo > herramientas > script executeve.Gracias Caral por responder.
En IBExpert me da error con la coma entre las tablas. osea que no lo acepta asi.
este si te permite hacer lo que quieres.
#7
Escrito 17 marzo 2012 - 11:42
algo asi :
http://desmond.imageshack.us/Himg10/scaled.php?server=10&filename=baseuq.png&res=medium
[img]http://http://desmond.imageshack.us/Himg10/scaled.php?server=10&filename=baseuq.png&res=medium[/img]
http://desmond.imageshack.us/Himg10/scaled.php?server=10&filename=baseuq.png&res=medium
[img]http://http://desmond.imageshack.us/Himg10/scaled.php?server=10&filename=baseuq.png&res=medium[/img]
#8
Escrito 17 marzo 2012 - 07:23
gracias a todos por responder.
la idea era saber si habia alguna consulta que lo hiciera.
gracias look, dejame ver como funciona.
la idea era saber si habia alguna consulta que lo hiciera.
gracias look, dejame ver como funciona.
#9
Escrito 18 marzo 2012 - 08:50
Hola.
No, que yo sepa no hay ninguna sentencia SQL que permita borrar datos de varias tablas simulatenamente.
Para conseguirlo tienes que hacer alguna programación adicional, como las que te han comentado.
* Establecer borrados en cascada en las relaciones de integridad entre tablas.
* Programar un procedimiento almacenado que se pueda llamar en una sola consulta y actualice todas las tablas.
* Establecer un Trigger en la primera tabla, de forma que cada vez que elimines un registro, borre los relacionados en otras tablas.
...
...
Saludos.
No, que yo sepa no hay ninguna sentencia SQL que permita borrar datos de varias tablas simulatenamente.
Para conseguirlo tienes que hacer alguna programación adicional, como las que te han comentado.
* Establecer borrados en cascada en las relaciones de integridad entre tablas.
* Programar un procedimiento almacenado que se pueda llamar en una sola consulta y actualice todas las tablas.
* Establecer un Trigger en la primera tabla, de forma que cada vez que elimines un registro, borre los relacionados en otras tablas.
...
...
Saludos.
#10
Escrito 23 marzo 2012 - 11:04
Como consejo, y a modo de advertencia, antes de establecer un ON DELETE CASCADE, ¡pensarlo dos veces!
Ten en cuenta que si borras algo que no debiera en la tabla que actúa de maestra, el motor borrará TODOS los registros de la tabla esclava.
La vía más segura de encarar un proceso controlado, y sin llegar a emplear la posibilidad de eliminación en cascada es emplear un procedimiento almacenado que dispare dos sentencias DELETE;una para la esclava y otra para la maestra. Naturalmente las sentencias DELETE deben disponer del filtro adecuado para no tocar otros registros.
Saludos,
Ten en cuenta que si borras algo que no debiera en la tabla que actúa de maestra, el motor borrará TODOS los registros de la tabla esclava.
La vía más segura de encarar un proceso controlado, y sin llegar a emplear la posibilidad de eliminación en cascada es emplear un procedimiento almacenado que dispare dos sentencias DELETE;una para la esclava y otra para la maestra. Naturalmente las sentencias DELETE deben disponer del filtro adecuado para no tocar otros registros.
Saludos,