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

Borrar filas de 3 tablas

Estas en el tema de Borrar filas de 3 tablas en el foro de SQL Server en Foros del Web. Hola, en realidad esto es algo que ya debería saber desde hace tiempo, pero siempre he ido a "lo sencillo" y nunca me he puesto ...
  #1 (permalink)  
Antiguo 21/10/2011, 01:40
 
Fecha de Ingreso: junio-2007
Ubicación: Cádiz
Mensajes: 369
Antigüedad: 16 años, 10 meses
Puntos: 7
Borrar filas de 3 tablas

Hola, en realidad esto es algo que ya debería saber desde hace tiempo, pero siempre he ido a "lo sencillo" y nunca me he puesto a investigar sobre el tema pq tampoco me lo exigía realmente la ocasión... pero ahora quiero empezar a hacer las cosas bien... y me gustaría que me ayudaráis en lo siguiente:

Tengo 3 tablas:

Encuestas
Id
Titulo
IdTema

Encuestas_opciones
Id
IdEncuesta
Opcion

Encuestas_votos
Id
IdEncuesta
IdOpcion
IdUsuario

Entonces, me gustaría saber como hacer una consulta, mediante la que al eliminar una encuesta, se eliminaran tanto las opciones de dicha encuesta como los votos qenerados en ella.

He estado buscando pero no termina de quedarme del todo claro, espero que podáis ayudarme.

Gracias anticipadas!!
  #2 (permalink)  
Antiguo 21/10/2011, 07:54
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Borrar filas de 3 tablas

Tendrias que hacer tus delete's tabla por tabla o que tuvieras en tus FK que los borrados sean en casacada :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 21/10/2011, 20:27
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Borrar filas de 3 tablas

Como se dijo, lo puedes resolver con las foreign key, en general es la mejor opción, ya que es rápido y reduce el código (un solo delete borra registros de tres tablas), la desventaja es que una foreign key se puede deshabilitar lo que provoca que no se borren los registros hijos, esto no es algo grave pero parece una falta de control sobre los datos por parte de la aplicación.

Código:
create table Encuestas(
 Id numeric(8) not null primary key,
 Titulo varchar(10)
)
go

create table Encuestas_opciones(
 Id numeric(8) not null primary key,
 IdEncuesta numeric(8),
 foreign key (IdEncuesta) references Encuestas 
 on delete cascade
)
go

create table Encuestas_votos (
 Id numeric(8) not null primary key,
 IdEncuesta numeric(8),
 foreign key (IdEncuesta) references Encuestas 
 on delete cascade
)
go

delete from Encuestas where id = 1
go
Saludos
  #4 (permalink)  
Antiguo 23/10/2011, 04:33
 
Fecha de Ingreso: junio-2007
Ubicación: Cádiz
Mensajes: 369
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: Borrar filas de 3 tablas

Gracias a los 2 por responder. Le echaré un vistazo el lunes.

Saludos.

Etiquetas: filas, tabla, 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 23:29.