Introduktion

Bygga och optimera triggers i SQL Server

Florin Angelescu

Instructor

Vad är en trigger?

  • Särskild typ av lagrad procedur
  • Körs när en händelse inträffar på databasservern

Hur en trigger fungerar

Bygga och optimera triggers i SQL Server

Typer av triggers (baserat på T-SQL-kommandon)

  • DML-triggers (Data Manipulation Language)
    • INSERT-, UPDATE- eller DELETE-satser
  • DDL-triggers (Data Definition Language)
    • CREATE-, ALTER- eller DROP-satser
  • Inloggningstriggers
    • LOGON-händelser
Bygga och optimera triggers i SQL Server

Typer av triggers (baserat på beteende)

  • AFTER-trigger

    • Den ursprungliga satsen körs
    • Ytterligare satser utlöses
  • Exempel på användningsområden

    • Återbygga ett index efter en stor insert
    • Meddela administratören när data uppdateras
Bygga och optimera triggers i SQL Server

Typer av triggers (baserat på beteende)

  • INSTEAD OF-trigger

    • Den ursprungliga satsen hindras från att köras
    • En ersättningssats körs i stället
  • Exempel på användningsområden

    • Förhindra insättningar
    • Förhindra uppdateringar
    • Förhindra borttagningar
    • Förhindra objektändringar
    • Meddela administratören
Bygga och optimera triggers i SQL Server

Triggerdefinition (med AFTER)

-- Create the trigger by giving it a descriptive name
CREATE TRIGGER ProductsTrigger

-- The trigger needs to be attached to a table ON Products
-- The trigger behavior type AFTER INSERT
-- The beginning of the trigger workflow AS
-- The action executed by the trigger PRINT ('An insert of data was made in the Products table.');
Bygga och optimera triggers i SQL Server

Triggerdefinition (med INSTEAD OF)

-- Create the trigger by giving it a descriptive name
CREATE TRIGGER PreventDeleteFromOrders
-- The trigger needs to be attached to a table
ON Orders
-- The trigger behavior type
INSTEAD OF DELETE
-- The beginning of the trigger workflow
AS
-- The action executed by the trigger
PRINT ('You are not allowed to delete rows from the Orders table.');
Bygga och optimera triggers i SQL Server

AFTER vs. INSTEAD OF

CREATE TRIGGER MyFirstAfterTrigger
ON Table1
-- Triggered after 
-- the firing event (UPDATE)
AFTER UPDATE
AS
{trigger_actions_section};
CREATE TRIGGER MyFirstInsteadOfTrigger
ON Table2
-- Triggered instead of 
-- the firing event (UPDATE)
INSTEAD OF UPDATE
AS
{trigger_actions_section};
Bygga och optimera triggers i SQL Server

Nu kör vi en övning!

Bygga och optimera triggers i SQL Server

Preparing Video For Download...