Ir al contenido


Foto

Borrar registro de dos tablas al mismo tiempo


  • Por favor identifícate para responder
9 respuestas en este tema

#1 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 17 marzo 2012 - 08:26

Hay alguna forma de borrar registros de dos tablas al mismo tiempo con una consulta sql.
  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 17 marzo 2012 - 10:40

Hola
No es algo así ?

Delete * from Tabla1, Tabla2 where Dato = :dat


Saludos
  • 0

#3 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

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.
  • 0

#4 lbuelvas

lbuelvas

    Member

  • Miembros
  • PipPip
  • 20 mensajes
  • LocationColombia

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.
  • 0

#5 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

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.
  • 0

#6 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 418 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 17 marzo 2012 - 11:37

Gracias Caral por responder.

En IBExpert me da error con la coma entre las tablas.  osea que no lo acepta asi.

abre el ibExpert, luego te vas al menu de archivo > herramientas >  script executeve.

este si te permite hacer lo que quieres.

  • 0

#7 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 418 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

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]
  • 0

#8 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

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.
  • 0

#9 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

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.
  • 0

#10 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

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,
  • 0




IP.Board spam blocked by CleanTalk.