Ricerca…


introduzione

Un trigger è un tipo speciale di stored procedure, che viene eseguito automaticamente dopo che si è verificato un evento. Esistono due tipi di trigger: Trigger linguaggio definizione dati e trigger linguaggio di manipolazione dati.

Di solito è legato a un tavolo e si attiva automaticamente. Non è possibile chiamare esplicitamente alcun trigger.

Tipi e classificazioni di Trigger

In SQL Server esistono due categorie di trigger: Trigger DDL e Trigger DML.

I trigger DDL vengono attivati ​​in risposta agli eventi DDL (Data Definition Language). Questi eventi corrispondono principalmente alle istruzioni Transact-SQL che iniziano con le parole chiave CREATE , ALTER e DROP .

I trigger DML vengono attivati ​​in risposta agli eventi DML (Data Manipulation Language). Questi eventi corrispondono alle istruzioni Transact-SQL che iniziano con le parole chiave INSERT , UPDATE e DELETE .

I trigger DML sono classificati in due tipi principali:

  1. After Triggers (per trigger)

    • AFTER INSERT Trigger.
    • AFTER UPDATE Trigger.
    • AFTER DELETE Trigger.
  2. Invece di trigger

    • INVIO DI INSERIMENTO Trigger.
    • INVECE DI AGGIORNAMENTO Trigger.
    • INVECE DI CANCELLARE Trigger.

Trigger DML

I trigger DML sono attivati ​​come risposta alle istruzioni dml ( insert , update o delete ).
È possibile creare un trigger dml per indirizzare uno o più eventi dml per una singola tabella o vista. Ciò significa che un singolo trigger dml può gestire l'inserimento, l'aggiornamento e l'eliminazione di record da una tabella o vista specifica, ma può solo gestire i dati modificati su quella singola tabella o vista.

Trigger DML fornisce l'accesso alle tabelle inserted ed deleted che contengono informazioni sui dati che sono stati / saranno interessati dall'istruzione di inserimento, aggiornamento o cancellazione che ha attivato il trigger.

Tieni presente che i trigger DML sono basati su istruzioni, non basati su righe. Ciò significa che se l'istruzione ha effettuato più di una riga, le tabelle inserite o eliminate conterranno più di una riga.

Esempi:

CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething  
FOR INSERT
AS

    INSERT INTO tblAudit (TableName, RecordId, Action)
    SELECT 'tblSomething', Id, 'Inserted'
    FROM Inserted

GO

CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething  
FOR UPDATE
AS

    INSERT INTO tblAudit (TableName, RecordId, Action)
    SELECT 'tblSomething', Id, 'Updated'
    FROM Inserted 

GO

CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething  
FOR DELETE
AS

    INSERT INTO tblAudit (TableName, RecordId, Action)
    SELECT 'tblSomething', Id, 'Deleted'
    FROM Deleted

GO

Tutti gli esempi precedenti aggiungeranno record a tblAudit ogni volta che un record viene aggiunto, eliminato o aggiornato in tblSomething.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow