Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/10/2015, 11:50
cmfc31
 
Fecha de Ingreso: febrero-2014
Mensajes: 3
Antigüedad: 10 años, 9 meses
Puntos: 0
Pregunta Usar una subconsulta dentro de un disparador?

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 original
  1. CREATE TRIGGER empleados5donaciones ON empleados FOR DELETE AS
  2. DECLARE @idEmp INT
  3. SELECT @idEmp=idempleado FROM deleted
  4. IF ((SELECT COUNT(*) FROM donaciones WHERE donaciones.idempleado=@idEmp)>5)
  5. BEGIN
  6.     PRINT 'El empleado ha registrado mas de 5 donaciones, no se puede eliminar.'
  7.     ROLLBACK TRANSACTION
  8. END
Tambien lo intente sin usar la variable.
Código SQL:
Ver original
  1. CREATE TRIGGER empleados5donaciones ON empleados FOR DELETE AS
  2. IF ((SELECT COUNT(*) FROM donaciones WHERE donaciones.idempleado=(SELECT idempleado FROM deleted))>5)
  3. BEGIN
  4.     PRINT 'El empleado ha registrado mas de 5 donaciones, no se puede eliminar.'
  5.     ROLLBACK TRANSACTION
  6. END

Última edición por gnzsoloyo; 05/10/2015 a las 10:14