Triggere AFTER (DML)

Crearea și optimizarea triggerelor în SQL Server

Florin Angelescu

Instructor

Definiție și proprietăți

  • Execută un set de acțiuni la declanșare
  • Acțiunile se execută doar după finalizarea evenimentului DML
  • Utilizat cu instrucțiunile INSERT, UPDATE și DELETE pentru tabele sau vizualizări
Crearea și optimizarea triggerelor în SQL Server

Condiții prealabile triggerului AFTER

  • Tabel sau vizualizare necesară pentru instrucțiunile DML
  • Triggerul va fi atașat aceluiași tabel

Date din tabelul Products utilizate în acest exemplu:

| 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      |
Crearea și optimizarea triggerelor în SQL Server

Condiții prealabile triggerului AFTER

  • Tabelul țintă
  • Descrierea triggerului
  • Evenimentul de declanșare (DML)
  • Numele triggerului
  • Products
  • Salvarea informațiilor despre produsele șterse într-un tabel de istoric
  • DELETE
  • TrackRetiredProducts
Crearea și optimizarea triggerelor în SQL Server

Rezumat condiții prealabile trigger AFTER

Când rândurile sunt eliminate din tabelul Products...

Salvați informațiile necesare din acele rânduri în tabelul 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  |
Crearea și optimizarea triggerelor în SQL Server

Definiția triggerului AFTER

CREATE TRIGGER TrackRetiredProducts

ON Products
AFTER DELETE
AS INSERT INTO RetiredProducts (Product, Measure) SELECT Product, Measure FROM deleted;
Crearea și optimizarea triggerelor în SQL Server

Tabelele "inserted" și "deleted"

  • Tabele speciale utilizate de triggerele DML
  • Create automat de SQL Server
Crearea și optimizarea triggerelor în SQL Server

Tabelele "inserted" și "deleted"

  • Tabele speciale utilizate de triggerele DML
  • Create automat de SQL Server
Tabel special INSERT UPDATE DELETE
inserted rânduri noi rânduri noi N/A
deleted N/A rânduri actualizate rânduri șterse
Crearea și optimizarea triggerelor în SQL Server

Triggerul AFTER complet

CREATE TRIGGER TrackRetiredProducts
ON Products
AFTER DELETE
AS
    INSERT INTO RetiredProducts (Product, Measure)
    SELECT Product, Measure
    FROM deleted;
Crearea și optimizarea triggerelor în SQL Server

Să exersăm!

Crearea și optimizarea triggerelor în SQL Server

Preparing Video For Download...