Creare trigger DML.
In questo argomento viene descritta la procedura per la creazione di un trigger DML Transact-SQL utilizzando SQL Server Management Studio e l'istruzione Transact-SQL CREATE TRIGGER.
Prima di iniziare
Limitazioni e restrizioni
Per un elenco di limitazioni e restrizioni associate alla creazione di trigger DML, vedere CREATE TRIGGER (Transact-SQL).
Autorizzazioni
È necessario disporre dell'autorizzazione ALTER per la tabella o la vista in cui si desidera creare il trigger.
Procedura: Creazione di un trigger DML
È possibile utilizzare uno dei seguenti elementi:
SQL Server Management Studio
Transact-SQL
Utilizzo di SQL Server Management Studio
In Esplora oggetti connettersi a un'istanza del Motore di database, quindi espanderla.
Espandere Database, espandere il database AdventureWorks2012 , espandere Tabelle e quindi espandere la tabella Purchasing.PurchaseOrderHeader.
Fare clic con il pulsante destro del mouse su Trigger, quindi selezionare Nuovo trigger.
Scegliere Imposta valori per parametri modello dal menu Query. In alternativa, è possibile premere (CTRL+MAIUSC+M) per aprire la finestra di dialogo Imposta valori per parametri modello.
Nella finestra di dialogo Imposta valori per parametri modello immettere i seguenti valori per i parametri indicati.
Parametro
Valore
Autore
Your name
Data di creazione
Today's date
Descrizione
Prima di consentire un nuovo ordine di acquisto con il fornitore da inserire, viene controllata la posizione finanziaria del fornitore.
Schema_Name
Purchasing
Trigger_Name
NewPODetail2
Table_Name
PurchaseOrderDetail
Data_Modification_Statement
Consente di rimuovere UPDATE e DELETE dall'elenco.
Fare clic su OK.
Nell'Editor di query, sostituire il commento -- Insert statements for trigger here con la seguente istruzione:
IF @@ROWCOUNT = 1 BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + LineTotal FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID END ELSE BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + (SELECT SUM(LineTotal) FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID) WHERE PurchaseOrderHeader.PurchaseOrderID IN (SELECT PurchaseOrderID FROM inserted) END;
Per verificare la validità della sintassi, scegliere Analizza dal menu Query. Se viene restituito un messaggio di errore, confrontare l'istruzione con le informazioni precedenti, apportare le modifiche necessarie e ripetere il passaggio.
Per creare il trigger DML, nel menu Query fare clic su Esegui. Il trigger DML viene creato come un oggetto nel database.
Per visualizzare il trigger DML nell'elenco di Esplora oggetti, fare clic con il pulsante destro del mouse su Trigger e selezionare Aggiorna.
[Torna all'inizio]
Utilizzo di Transact-SQL
In Esplora oggetti connettersi a un'istanza del Motore di database, quindi espanderla.
Nel menu File, fare clic su Nuova query.
Copiare il seguente esempio e incollarlo nella finestra Query, quindi fare clic su Esegui. In questo esempio vengono creati gli stessi trigger DML archiviati indicati in precedenza.
-- Trigger valid for multirow and single row inserts -- and optimal for single row inserts. USE AdventureWorks2012; GO CREATE TRIGGER NewPODetail3 ON Purchasing.PurchaseOrderDetail FOR INSERT AS IF @@ROWCOUNT = 1 BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + LineTotal FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID END ELSE BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + (SELECT SUM(LineTotal) FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID) WHERE PurchaseOrderHeader.PurchaseOrderID IN (SELECT PurchaseOrderID FROM inserted) END;
[Torna all'inizio]