Principales respuestas
Disparadores

Pregunta
-
Respuestas
-
Lo primero antes de empezar es decir que para esto no se debería usar un disparador sino un Foreign Key.
Dicho eso, si realmente quieres usar un disparador, sería más o menos así:
create trigger trgNombre after delete on latabla as begin if exists (select * from laotratabla join deleted on laotratabla.campo=deleted.campo) rollback end
Es decir, en resumidas cuentas hacemos un join de la tabla "deleted", que trae todos los registros que has borrado (podrían ser más de uno) contra la tabla en la que queremos que no exista el vínculo. Si existe algún resultado quiere decir que sí que había vínculo. En ese caso hacemos un rollback de la transacción, lo cuál "desborra" los registros borrados.
- Editado Alberto PoblacionMVP martes, 26 de febrero de 2019 7:28
- Propuesto como respuesta Javi Fernández F martes, 26 de febrero de 2019 14:06
- Marcado como respuesta Addalove miércoles, 22 de mayo de 2019 5:44
Todas las respuestas
-
Lo primero antes de empezar es decir que para esto no se debería usar un disparador sino un Foreign Key.
Dicho eso, si realmente quieres usar un disparador, sería más o menos así:
create trigger trgNombre after delete on latabla as begin if exists (select * from laotratabla join deleted on laotratabla.campo=deleted.campo) rollback end
Es decir, en resumidas cuentas hacemos un join de la tabla "deleted", que trae todos los registros que has borrado (podrían ser más de uno) contra la tabla en la que queremos que no exista el vínculo. Si existe algún resultado quiere decir que sí que había vínculo. En ese caso hacemos un rollback de la transacción, lo cuál "desborra" los registros borrados.
- Editado Alberto PoblacionMVP martes, 26 de febrero de 2019 7:28
- Propuesto como respuesta Javi Fernández F martes, 26 de febrero de 2019 14:06
- Marcado como respuesta Addalove miércoles, 22 de mayo de 2019 5:44
-