CAPIRE UN TRIGGER INSERT; UPDATE; DELETE

sabato 28 giugno 2008 - 08.31

gmt Profilo | Junior Member

SQL SERVER 2005 (Express)

Salve, domanda stupida ma non trovo la risposta. Ho creato un trigger che viene eseguito in caso in insert/update/delete su di una tabella.. devo capire all'interno del trigger se è stato chiamato per insert update o delete come faccio ?
Questo mi serve per prendere la chiave univoca tramite SELECT ID FROM INSERTED oppure SELECT ID FROM UPDATED.
ID è il campo chiave contatore della tabella.

Grazie

lbenaglia Profilo | Guru

>Salve, domanda stupida ma non trovo la risposta. Ho creato un
>trigger che viene eseguito in caso in insert/update/delete su
>di una tabella.. devo capire all'interno del trigger se è stato
>chiamato per insert update o delete come faccio ?
La soluzione più semplice ed ordinata consiste nel definire 3 triggers distinti per ogni operazione DML
Comunque per rispondere alla tua domanda puoi fare riferimento a questo esempio:

USE tempdb; CREATE TABLE dbo.Students( StudentID int NOT NULL, FirstName varchar(10) NOT NULL, LastName varchar(10) NOT NULL ); GO CREATE TRIGGER trIUD_Students ON dbo.Students FOR INSERT, UPDATE, DELETE AS IF EXISTS(SELECT * FROM INSERTED) AND EXISTS(SELECT * FROM DELETED) BEGIN PRINT 'UPDATE'; RETURN END IF EXISTS(SELECT * FROM INSERTED) PRINT 'INSERT'; ELSE PRINT 'DELETE'; GO INSERT dbo.Students VALUES(1, 'Lorenzo', 'Benaglia'); /* Output: INSERT (1 row(s) affected) */ UPDATE dbo.Students SET FirstName = 'Andrea', LastName = 'Montanari'; /* Output: UPDATE (1 row(s) affected) */ DELETE dbo.Students; /* Output: DELETE (1 row(s) affected) */ DROP TABLE dbo.Students;

>Questo mi serve per prendere la chiave univoca tramite SELECT
>ID FROM INSERTED oppure SELECT ID FROM UPDATED.
Non esiste alcuna tabella virtuale chiamata UPDATED
In caso di UPDATE verranno popolate entrambe le tabelle virtuali INSERTED e DELETED, rispettivamente con i nuovi ed i vecchi valori.

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5