Trigger On Delete revisar otra tabla antes de borrar registros.

08/09/2007 - 23:13 por Cristiancito | Informe spam
Estimados:

Soy nuevo en el uso de Trigger y Procedimientos Almacenados y
quisiera solicitar ayuda en lo siguiente:
Necesito crear un Trigger que al modificar una columna de una tabla
verifique primero que no existan registros asociados en otra tabla de
lo contrario no se pueda eliminar el registro. Comprendo que debo
hacerlo disparando el evento Delete de la tabla origen y antes de
borrar (before), se tambien realizar la consulta para verificar que no
existan registros asociados pero no se que instrucción me permite
impedir el borrado de la tabla.

Podria solucionar el problema con una clave foranea pero no me es lo
mas recomendable porque una y otra tabla no tienen una relación
necesariamente de maestro detalle, mas bien corresponden a información
relacionada.

Desde ya muchas gracias.

PD: En realidad trabajo con una bd en SQL Anywhere pero por lo que
estuve viendo la forma de trabajar es muy similar a SQLServer.

Atte.

Cristián Muñoz Tello.
SNSI.
 

Leer las respuestas

#1 principiante
09/09/2007 - 00:16 | Informe spam
Yo creo que primero debes preferir y agotar las posibilidades de usar claves
foráneas porque éstas existen precisamente para ese tipo de relaciones de
integridad.

De todos modos, si aun deseas hacerlo por triggers puedes impedir el borrado
simplemente luego de verificar la condición restrictiva, simulando un error
a través de la instrucción RaisError().

Jose TH


"Cristiancito" escribió en el mensaje
news:
Estimados:

Soy nuevo en el uso de Trigger y Procedimientos Almacenados y
quisiera solicitar ayuda en lo siguiente:
Necesito crear un Trigger que al modificar una columna de una tabla
verifique primero que no existan registros asociados en otra tabla de
lo contrario no se pueda eliminar el registro. Comprendo que debo
hacerlo disparando el evento Delete de la tabla origen y antes de
borrar (before), se tambien realizar la consulta para verificar que no
existan registros asociados pero no se que instrucción me permite
impedir el borrado de la tabla.

Podria solucionar el problema con una clave foranea pero no me es lo
mas recomendable porque una y otra tabla no tienen una relación
necesariamente de maestro detalle, mas bien corresponden a información
relacionada.

Desde ya muchas gracias.

PD: En realidad trabajo con una bd en SQL Anywhere pero por lo que
estuve viendo la forma de trabajar es muy similar a SQLServer.

Atte.

Cristián Muñoz Tello.
SNSI.

Preguntas similares