Creare trigger DML
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Questo argomento descrive come creare un trigger DML Transact-SQL usando SQL Server Management Studio e l'istruzione TRIGGER di Transact-SQL.
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 usare uno dei seguenti elementi:
Utilizzo di SQL Server Management Studio
In Esplora oggetti connettersi a un'istanza del motore di database ed espanderla.
Espandere Database, espandere il database
AdventureWorks2022
, espandere Tabelle e quindi espandere la tabella Purchasing.PurchaseOrderHeader.Fare clic con il pulsante destro del mouse su Trigger, quindi scegliere 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 Nome dell'utente Data di creazione Data odierna Descrizione Prima di consentire un nuovo ordine di acquisto con il fornitore da inserire, viene controllata la posizione finanziaria del fornitore. Schema_Name Acquisti Trigger_Name NewPODetail2 Table_Name PurchaseOrderDetail Data_Modification_Statement Consente di rimuovere UPDATE e DELETE dall'elenco. Fare clic su OK.
Nell' Editor di querysostituire il commento
-- Insert statements for trigger here
con l'istruzione seguente: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, scegliere Esegui dal menu Query. 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 scegliere Aggiorna.
Utilizzo di Transact-SQL
In Esplora oggetti connettersi a un'istanza del motore di database ed espanderla.
Nel menu File , fare clic su Nuova query.
Copiare e incollare l'esempio seguente 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 AdventureWorks2022; 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;