Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

como borrar registros de 2 o mas tablas

Estas en el tema de como borrar registros de 2 o mas tablas en el foro de PostgreSQL en Foros del Web. salduos amigos, tengo 2 tablas las cuales las tengon en una relacion uno a uno, es decir que el id en ambas tablas tiene el ...
  #1 (permalink)  
Antiguo 09/03/2014, 20:59
 
Fecha de Ingreso: enero-2014
Mensajes: 100
Antigüedad: 10 años, 2 meses
Puntos: 0
Información como borrar registros de 2 o mas tablas

salduos amigos, tengo 2 tablas las cuales las tengon en una relacion uno a uno, es decir que el id en ambas tablas tiene el mismo nombre y tipo de datos y lo que estoy intentando hacer es un procedimiento almacenado para poder borrar los registros de ambas tablas con una sola sentencia, segun yo la sentencia seria haci:

Código SQL:
Ver original
  1. DELETE FROM nombre_de_tabla1,nombre_de_tabla2 WHERE id_de_las_tablas='aqui la condicion'

donde id_de_las_tablas es el nombre del id que aparece en cada tabla y que borrara los registros de estas tablas cuando cumplan la condicion.

no se si mi sintaxis esta bien ya que cuando intente correr esta consulta antes de poder hacer el procedimiento me aparece esto en pantalla:

Código SQL:
Ver original
  1. ERROR:  error de sintaxis en o cerca de «,»
  2. LINE 1: DELETE FROM prestador,servicio,practicas WHERE id_prestador=...
  3.                              ^
  4.  
  5. ********** Error **********
  6.  
  7. ERROR: error de sintaxis en o cerca de «,»

podrian ayudarme???

NOTA: otra cosa que se me ocurrio, no se si se pueda es hacer un join para unir las tablas y poder borrar. otra por lo que estube investigando nombran algo llamado borrado en cascada pero lo que entendi que para que pueda duncionar es que debe de haber una relacion de uno a muchos creo.

Por ultimo, les muestro el procedimiento almacenado pero con las sentencias separadas, una por cada tabla hice las pruebas y si se borra:

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION prueba_borrado(id CHARACTER)
  2. RETURNS void AS
  3.    'delete from prestador where id_prestador=id;'
  4.    'delete from servicio where id_prestador=id;'
  5.    'delete from practicas where id_prestador=id;'
  6. LANGUAGE SQL

Aun que con esto podria darme por bien servido, pero me gustaria poder optimizar esto y asi preever que podria llegar a tener mas de 2 tablas en relacion uno a uno.
__________________
"Benditos sean todos los libros, pues cuando abres uno, te sumerges en un mundo nuevo y completamente diferente"

Última edición por bibliotecario_oscuro; 09/03/2014 a las 21:06
  #2 (permalink)  
Antiguo 10/03/2014, 08:15
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: como borrar registros de 2 o mas tablas

La función es la mejor opción par lo que buscas.

Saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 10/03/2014, 22:42
 
Fecha de Ingreso: enero-2014
Mensajes: 100
Antigüedad: 10 años, 2 meses
Puntos: 0
Información Respuesta: como borrar registros de 2 o mas tablas

ya veo, si es lo que estaba biendo, de echo ya la implemente y ademas implemente tambien una funcion parecida pero para actualizar las tablas que estan relacionadas uno a uno. pero aun asi me gustaria saber, para no quedarme con la duda si hay forma de optimizar esto en un solo query jejejeje. muchas gracias por tu comentario huesos52.
__________________
"Benditos sean todos los libros, pues cuando abres uno, te sumerges en un mundo nuevo y completamente diferente"
  #4 (permalink)  
Antiguo 14/05/2014, 13:53
Avatar de death_nemesis  
Fecha de Ingreso: abril-2009
Ubicación: Santiago - Chile
Mensajes: 147
Antigüedad: 15 años
Puntos: 2
Respuesta: como borrar registros de 2 o mas tablas

y has provado con activar la opcion en la FK de tu tabla que sea DROP ON CASCADE ?
  #5 (permalink)  
Antiguo 02/12/2014, 05:57
 
Fecha de Ingreso: diciembre-2014
Mensajes: 16
Antigüedad: 9 años, 4 meses
Puntos: 1
Respuesta: como borrar registros de 2 o mas tablas

utiliza la sentencia using

delete from prueba using compara where prueba.codigo = compara.codigo

Etiquetas: registros, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:06.