Come capire il tipo di operazione DML all’interno di un trigger attivato per INSERT, UPDATE e DELETE

I trigger sono strumenti molto potenti e pericolosi, in questa situazione possiamo capire quale azione viene compiuta su una tabella di nome ‘test’:

USE pubs –> Usa il database pubs

GO

/* se esiste all’interno del database l’oggetto ‘test’ ed è una TABELLA */

IF OBJECTPROPERTY ( object_id(‘test’),’ISTABLE’) = 1

DROP TABLE test /* allora lo elimino */

/* se esiste all’interno del database l’oggetto ‘tr_test’ ed è un TRIGGER */

IF OBJECTPROPERTY ( object_id(‘tr_test’),’ISTRIGGER’) = 1

DROP TRIGGER tr_test /* allora lo elimino */

GO

/* creo una TABELLA dal nome ‘test’ */

CREATE TABLE test(i int)

GO

/* creo un TRIGGER dal nome ‘tr_test’ */

CREATE TRIGGER tr_test ON test FOR INSERT, UPDATE, DELETE AS

IF EXISTS(SELECT * FROM inserted) AND EXISTS(SELECT * FROM deleted)

PRINT ‘UPDATE… hai aggiornato uno o più record’

ELSE

IF EXISTS(SELECT * FROM inserted) AND NOT EXISTS(SELECT * FROM deleted)

PRINT ‘INSERT… hai inserito uno o più record’

ELSE

PRINT ‘DELETE… hai eliminato uno o più record’

GO

/* Istruzioni DML per INSERT , UPDATE e DELETE */

INSERT test values(1)

UPDATE test set i = i + 1

DELETE test

I Video di HTML.it

Daniele Pagani: le novità di Nokia per sviluppatori