AFTER-triggers (DML)

Triggers in SQL Server bouwen en optimaliseren

Florin Angelescu

Instructor

Definitie en eigenschappen

  • Voert acties uit zodra hij afgaat
  • Pas na afloop van de DML-actie
  • Gebruikt met INSERT, UPDATE en DELETE op tabellen of views
Triggers in SQL Server bouwen en optimaliseren

Vereisten voor een AFTER-trigger

  • Tabel of view nodig voor DML-statements
  • De trigger wordt aan dezelfde tabel gekoppeld

Output van tabel Products voor dit voorbeeld:

| 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      |
Triggers in SQL Server bouwen en optimaliseren

Vereisten voor een AFTER-trigger

  • Doeltabel
  • Omschrijving van de trigger
  • Trigger-event (DML)
  • Triggernaam
  • Products
  • Info over verwijderde producten opslaan in een historietabel
  • DELETE
  • TrackRetiredProducts
Triggers in SQL Server bouwen en optimaliseren

Samenvatting vereisten voor AFTER-trigger

Als er rijen uit de tabel Products worden verwijderd...

Sla de benodigde info uit die rijen op in de tabel 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  |
Triggers in SQL Server bouwen en optimaliseren

Definitie van een AFTER-trigger

CREATE TRIGGER TrackRetiredProducts

ON Products
AFTER DELETE
AS INSERT INTO RetiredProducts (Product, Measure) SELECT Product, Measure FROM deleted;
Triggers in SQL Server bouwen en optimaliseren

Tabellen "inserted" en "deleted"

  • Speciale tabellen gebruikt door DML-triggers
  • Automatisch aangemaakt door SQL Server
Triggers in SQL Server bouwen en optimaliseren

Tabellen "inserted" en "deleted"

  • Speciale tabellen gebruikt door DML-triggers
  • Automatisch aangemaakt door SQL Server
Speciale tabel INSERT UPDATE DELETE
inserted nieuwe rijen nieuwe rijen n.v.t.
deleted n.v.t. bijgewerkte rijen verwijderde rijen
Triggers in SQL Server bouwen en optimaliseren

De complete AFTER-trigger

CREATE TRIGGER TrackRetiredProducts
ON Products
AFTER DELETE
AS
    INSERT INTO RetiredProducts (Product, Measure)
    SELECT Product, Measure
    FROM deleted;
Triggers in SQL Server bouwen en optimaliseren

Laten we oefenen!

Triggers in SQL Server bouwen en optimaliseren

Preparing Video For Download...