pregunta

07/05/2004 - 15:14 por Heidi | Informe spam
Hola a todos, en un trigger puedo hacer un mensaje de error a un usuario si
una condicion no se cumple?, y además puedo detener la actualización,
inserción o eliminación ?. cómo se haría?

Mil gracias por su ayuda
 

Leer las respuestas

#1 Isaías
07/05/2004 - 16:10 | Informe spam
Hola Heidi

Le recomiendo que lea su Ayuda en Linea, hay buenos
ejemplos como este:

Este ejemplo crea un desencadenador que, cuando se inserta
o se cambia un nivel de trabajo de empleado, comprueba que
el nivel especificado del trabajo del empleado (job_lvls)
en el que se basan los salarios se encuentra en el
intervalo definido para el trabajo. Para obtener el
intervalo adecuado, debe hacerse referencia a la tabla
jobs.

USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'employee_insupd' AND type = 'TR')
DROP TRIGGER employee_insupd
GO
CREATE TRIGGER employee_insupd
ON employee
FOR INSERT, UPDATE
AS
/* Get the range of level for this job type from the jobs
table. */
DECLARE @min_lvl tinyint,
@max_lvl tinyint,
@emp_lvl tinyint,
@job_id smallint
SELECT @min_lvl = min_lvl,
@max_lvl = max_lvl,
@emp_lvl = i.job_lvl,
@job_id = i.job_id
FROM employee e INNER JOIN inserted i ON e.emp_id =
i.emp_id
JOIN jobs j ON j.job_id = i.job_id
IF (@job_id = 1) and (@emp_lvl <> 10)
BEGIN
RAISERROR ('Job id 1 expects the default level of 10.',
16, 1)
ROLLBACK TRANSACTION
END
ELSE
IF NOT (@emp_lvl BETWEEN @min_lvl AND @max_lvl)
BEGIN
RAISERROR ('The level for job_id:%d should be between %
d and %d.',
16, 1, @job_id, @min_lvl, @max_lvl)
ROLLBACK TRANSACTION
END

Preguntas similares