![]() |
Trigger ... error al crear
Hola a todos:
Tengo dos tablas (PROFES, FALTAS) y quiero hacer un trigger que al borrar un profesor de la primera tabla (PROFES) borre antes las lineas de faltas que tiene en la segunda (FALTAS) Campos PROFES: CODIGO -> primary key NOMBRE etc. Campos FALTAS FALTA -> primary key PROFESOR INICIOFALTA etc. FOREIGN KEY ("PROFESOR") REFERENCES PROFES ("CODIGO") He intentado hacer este trigger: CREATE TRIGGER FALTAS_BD FOR FALTAS BEFORE DELETE AS BEGIN DELETE FROM FALTAS WHERE PROFESOR=:OLD_CODIGO; END y me da el siguiente error: Dynamic SQL Error SQL error code = -104 Unexpected end of command Statement: CREATE TRIGGER FALTAS_BD FOR FALTAS BEFORE DELETE AS BEGIN DELETE FROM FALTAS WHERE PROFESOR=:OLD_CODIGO No se ni por qué da error, ni si el trigger está bien, pues es el primero que intento hacer. Muchas gracias. Tomás. |
si quieres que te borre las faltas del profesor, el trigger tienes que crearlo en la tabla de profesores, no en la de faltas
Código:
|
Re: Trigger ... error al crear
Hola,
Cita:
Código:
FOREIGN KEY ("PROFESOR") REFERENCES PROFES ("CODIGO") ON DELETE CASCADE Saludos. |
Me sigue dando el mismo error:
Dynamic SQL Error SQL error code = -104 Unexpected end of command Statement: CREATE TRIGGER PROFES_BD0 FOR PROFES ACTIVE BEFORE DELETE POSITION 0 AS begin delete from faltas a where a.profesor = old.codigo ¿Qué significa la a [faltas a where a.profesor] ? Utilizdo IBConsole. Un saludo. Tomás. |
Yo te recomendaría que lo hagas como indica kinobi...
Es una forma rápida de reproducir el comportamiento que deseas... Saludos... |
Muchas gracias, kinobi, he añadido ON DELETE CASCADE y funciona perfectamente.
Un saludo. Tomás. |
Hola,
solamente apuntar que la solución dada por Cadetill además de válida, es también lo que hace internamente el motor relacional del servidor al encontrarse la cláusula FOREIGN KEY ... ON DELETE ... La integridad referencial declarativa simplifica la tarea en cuanto a la codificación de los fuentes, pero la tarea sigue siendo la misma. Por cierto, y volviendo al error que te daba en la creación del trigger: es un problema con los finalizadores de sentencia ... para otra ocasión (con triggers y procedimientos almacenados) échale un vistazo a la sentencia SET TERM ..., la necesitarás. Saludos. |
La franja horaria es GMT +2. Ahora son las 01:04:43. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi