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

Borrado validando hijos tipo arbol

Estas en el tema de Borrado validando hijos tipo arbol en el foro de SQL Server en Foros del Web. Hola foristas. Tengo este interrogante .. se puede impedir eliminar registros en una tabla si existe algun hijo en otra tabla. Me explico mejor, hay ...
  #1 (permalink)  
Antiguo 16/04/2010, 16:44
Avatar de Hollman  
Fecha de Ingreso: enero-2003
Ubicación: Bogotá - Colombia
Mensajes: 202
Antigüedad: 21 años, 2 meses
Puntos: 1
Pregunta Borrado validando hijos tipo arbol

Hola foristas.

Tengo este interrogante .. se puede impedir eliminar registros en una tabla si existe algun hijo en otra tabla. Me explico mejor, hay 2 tablas (Dependencia y Personal):

Dependencia
| id_dep | nombre | id_padre
===================
3 General
5 Financiera 3
7 Sistemas 3
8 Cartera 5
11 Creditos 5

Personal
| id | id_dep | nombre | .....
=====================
73817 11 Alberto

El usuario Alberto pertenece a la dependencia Créditos, si se desea eliminar dicha dependencia el sistema no debe permitirlo eliminar... hasta aquí sencillo, pero si deseo eliminar la dependencia Financiera NO debe permitirsele borrarla ya que otra (sub)dependencia tiene relación con registros en otra tabla.

Como hago esto?

Agradezco su colaboración....

Muchas gracias y muchos éxitos.

PD: Por programación recursiva talvez pueda hayar una solución pero quiero saber si mediante contraints, PK, FK, etc pudiese hacerse.
  #2 (permalink)  
Antiguo 16/04/2010, 21:47
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 3 meses
Puntos: 7
Respuesta: Borrado validando hijos tipo arbol

Tú mismo te has dado la respuesta. Utiliza foreign key constraints en tus tablas con NO ACTION. Eso impedirá el borrado mientras haya filas dependientes en otra tabla.

Etiquetas: borrado, tipo, arboles
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 14:42.