AFTER-triggers (DML)

Bygga och optimera triggers i SQL Server

Florin Angelescu

Instructor

Definition och egenskaper

  • Utför en uppsättning åtgärder när den aktiveras
  • Åtgärderna utförs först efter att DML-händelsen är klar
  • Används med INSERT-, UPDATE- och DELETE-satser för tabeller eller vyer
Bygga och optimera triggers i SQL Server

Förutsättningar för AFTER-trigger

  • En tabell eller vy krävs för DML-satser
  • Triggern kopplas till samma tabell

Utdata från tabellen Products som används i det här exemplet:

| Product | Price | Currency | Quantity | Measure |
|---------|-------|----------|----------|---------|
| Apple   | 2.00  | USD      | 25000    | kg      |
| Apricot | 1.55  | USD      | 2500     | kg      |
| Avocado | 3.00  | USD      | 1000     | kg      |
| Banana  | 1.80  | USD      | 35000    | kg      |
Bygga och optimera triggers i SQL Server

Förutsättningar för AFTER-trigger

  • Måltabell
  • Beskrivning av triggern
  • Triggerns aktiveringshändelse (DML)
  • Triggerns namn
  • Products
  • Spara information om borttagna produkter i en historiktabell
  • DELETE
  • TrackRetiredProducts
Bygga och optimera triggers i SQL Server

Sammanfattning – förutsättningar för AFTER-trigger

När rader tas bort från tabellen Products...

Spara den information som behövs från dessa rader i tabellen RetiredProducts.

| Product | Price | Currency | Quantity | Measure |
|---------|-------|----------|----------|---------|
| Apple   | 2.00  | USD      | 25000    | kg      |
| Apricot | 1.55  | USD      | 2500     | kg      | X
| Avocado | 3.00  | USD      | 1000     | kg      |
| Banana  | 1.80  | USD      | 35000    | kg      |
| Product | Measure | RemovalDate |
|---------|---------|-------------|
| Apricot | kg      | 19.04.2019  |
Bygga och optimera triggers i SQL Server

Definition av AFTER-trigger

CREATE TRIGGER TrackRetiredProducts

ON Products
AFTER DELETE
AS INSERT INTO RetiredProducts (Product, Measure) SELECT Product, Measure FROM deleted;
Bygga och optimera triggers i SQL Server

Tabellerna "inserted" och "deleted"

  • Specialtabeller som används av DML-triggers
  • Skapas automatiskt av SQL Server
Bygga och optimera triggers i SQL Server

Tabellerna "inserted" och "deleted"

  • Specialtabeller som används av DML-triggers
  • Skapas automatiskt av SQL Server
Specialtabell INSERT UPDATE DELETE
inserted nya rader nya rader Saknas
deleted Saknas uppdaterade rader borttagna rader
Bygga och optimera triggers i SQL Server

Den fullständiga AFTER-triggern

CREATE TRIGGER TrackRetiredProducts
ON Products
AFTER DELETE
AS
    INSERT INTO RetiredProducts (Product, Measure)
    SELECT Product, Measure
    FROM deleted;
Bygga och optimera triggers i SQL Server

Nu kör vi en övning!

Bygga och optimera triggers i SQL Server

Preparing Video For Download...