Hola, estoy haciendo una guia de subconsultas y disparadores en SQL Server. Y me he quedado atorado en este problema, se me pide crear un disparador que impida eliminar a los empleados que hayan ingresado más de 5 donaciones.
Como no conosco el numero de donaciones registradas por el empleado a eliminar he intentando usando una subconsulta tomando el valor del id del empleado y preguntando en cuantas donaciones tienen asociado ese id, pero al parecer no me regresa el dato que quiero. Por lo que lo eliminia de todos modos.
Código SQL:
Ver originalCREATE TRIGGER empleados5donaciones ON empleados FOR DELETE AS
DECLARE @idEmp INT
SELECT @idEmp=idempleado FROM deleted
IF ((SELECT COUNT(*) FROM donaciones WHERE donaciones.idempleado=@idEmp)>5)
BEGIN
PRINT 'El empleado ha registrado mas de 5 donaciones, no se puede eliminar.'
ROLLBACK TRANSACTION
END
Tambien lo intente sin usar la variable.
Código SQL:
Ver originalCREATE TRIGGER empleados5donaciones ON empleados FOR DELETE AS
IF ((SELECT COUNT(*) FROM donaciones WHERE donaciones.idempleado=(SELECT idempleado FROM deleted))>5)
BEGIN
PRINT 'El empleado ha registrado mas de 5 donaciones, no se puede eliminar.'
ROLLBACK TRANSACTION
END