Hola al grupo,
Tengo el siguiente trigger
CREATE TRIGGER Act_Hospitalizaciones ON Hospitalizaciones AFTER
INSERT,DELETE,UPDATE
AS
BEGIN
DELETE Enfermedades WHERE Desde_Hospital In (SELECT Codigo FROM Deleted)
INSERT Enfermedades SELECT Paciente, Causa, Fecha, Codigo FROM Inserted
END
El cometido del Trigger es que necesito actualizar la tabla enfermedades
automáticamente a partir de la tabla de Hospitalizaciones, de manera que
cada vez que se inserta, modifica o elimina un registro de la tabla de
hospitalizaciones se tiene que agregar, modificar o eliminar el registro
correspondiente en la tabla de enfermedades. El campo Desde_Hospital de
Enfermedades tiene un valor que corresponde con el campo codigo de la tabla
de Hospitalizaciones.
Parece que funciona bien pero, en mi proyecto realizado, me produce errores
cuando intento actualizar la tabla de hospitalizaciones. Parece ser que
cuando no exiten registros correspondientes en la tabla de hospitalizaciones
para eliminar algo provoca un error que solo aparece desde la aplicación que
estoy realizando. El error dice: "No se encuentra la fila para su
actualización. Algunos valores han cambiado desde que se leyó los datos por
última vez".
Hay que tener en cuenta que la tabla enfermedades también tiene un TRIGGER
que actualiza otra tabla (Pacientes) que actualiza un determinado campo.
CREATE TRIGGER Act_Enfermedades ON Enfermedades AFTER INSERT, UPDATE
AS
BEGIN
UPDATE Pacientes SET Fecha_Enfermedad=Fecha FROM Pacientes INNER JOIN
(SELECT Paciente, Fecha FROM Deleted) As x ON Pacientes.Codigo=x.Paciente
END
No sé si estoy haciendo bien los triggers, ¿alguien me sugiere hacerlo de
otra manera? ¿Como puedo saber dentro de un trigger cuando entra añadiendo,
modificando o eliminado datos de la tabla en cuestión?
Gracias por adelantado y saludos al grupo,
José Antonio Muñoz
Leer las respuestas