Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/08/2011, 14:17
Pelydas
 
Fecha de Ingreso: abril-2010
Mensajes: 68
Antigüedad: 14 años
Puntos: 0
Actualizar y borrar articulos en cascadas con TSQL

Hola a todos, tengo que hacer triggers para lograr lo mismo que las cascadas, es decir quitar esta funcion a las FK y hacerlo yo, pero no tengo ni idea de por donde empezar en la parte del borrado, la parte de actualizacion la tengo mas o menos clara. Explico mas claro con un ejemplo:

Tabla1
.....| idtabla1 | Descrip | ....

Tabla2

......| idtabla2 | Descrip | .....

Tabla3

......| idtabla3 | Descrip | .....

y tengo definidas FK_idtabla2_idtabla1 en Tabla2 y FK_idtabla3_idtabla2 en Tabla3. Si tengo que actualizar idtabla1 no pasa nada porque simulo la cascada con TSQL en un trigger, desabilito FK_idtabla2_idtabla1 y cambio en Tabla1 y Tabla2 idtabla1 e idtabla2 y todas las idtablaX que tengan ese valor en FK_idtablaX. La cosa se complica cuando borro en Tabla1 articulos puesto que debo borrar en Tabla2 los articulos con llave FK_idtabla2_idtabla1 y aunque no tienen FK directa en Tabla1 tengo que borrar tambien los articulos en Tabla3 que tienen FK_idtabla3_idtabla2. Para las actualizacion use una serie de inner join entre tablas como sys_foreing_keys, sys_column , etc usando EXEC con cadenas de caracteres formadas para realizar las "cascadas" pero en el caso del borrado no tengo ni idea de como buscar todas las "ramas" o "dependencias" que se "cuelguen" desde Tabla1. Por supuesto estarian involucradas en esto unas 60 tablas Espero haber sido claro y sobre todo no muy aburrido con el tamaño de este mensaje. Gracias.