Transact-SQL: Rilevare se un trigger è stato attivato da UPDATE, INSERT o DELETE

ALTER TRIGGER [dbo].[ilmiotrigger]  
   ON  [dbo].[lamiatabella]
   AFTER INSERT,DELETE,UPDATE
AS 
BEGIN
 
	SET NOCOUNT ON;
 
	/* 
	Tipo di operazione eseguita: 
	0: UPDATE
	1: INSERT
	2: DELETE
	*/
	DECLARE @op_type INT	
 
	/* Individuo quale tipo di query è stata fatta UPDATE/DELETE/INSERT */
	IF EXISTS (SELECT * FROM inserted) AND EXISTS (SELECT * FROM deleted)
		BEGIN
			/* UPDATE*/
			SET @op_type = 0
		END
	ELSE
		BEGIN
			IF EXISTS (SELECT * FROM inserted)
				BEGIN
					/* INSERT */
					SET @op_type = 1
				END
			ELSE
				BEGIN
					/* DELETE */
					SET @op_type = 2
				END
		END
 
END

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>