Triggers in SQL Server bouwen en optimaliseren
Florin Angelescu
Instructor
CREATE TRIGGER MyFirstAfterTrigger
ON Table1
-- Geactiveerd na
-- de triggergebeurtenis (UPDATE)
AFTER UPDATE
AS
{trigger_actions_section};
CREATE TRIGGER MyFirstInsteadOfTrigger
ON Table2
-- Geactiveerd in plaats van
-- de triggergebeurtenis (UPDATE)
INSTEAD OF UPDATE
AS
{trigger_actions_section};
AFTER-trigger
Initiële gebeurtenis activeert de trigger
Initiële gebeurtenis voert uit
De triggeracties voeren uit

INSTEAD OF-trigger
Initiële gebeurtenis activeert de trigger
Initiële gebeurtenis wordt niet meer uitgevoerd
De triggeracties voeren uit

CREATE TRIGGER SalesNewInfoTrigger ON Sales AFTER INSERT ASEXEC sp_cleansing @Table = 'Sales';EXEC sp_generateSalesReport;EXEC sp_sendnotification;
| Brand | Model | Power | Stock |
|-------|----------|-------|-------|
| Ecco | Standard | 30W | 30 |
| Miry | Buma | 45W | 0 |
| Lume | Ultra | 50W | 0 |
CREATE TRIGGER BulbsStockTrigger
ON Bulbs
INSTEAD OF INSERT
AS
| Brand | Model | Power | Stock |
|-------|----------|-------|-------|
| Ecco | Standard | 30W | 30 |
| Miry | Buma | 50W | 100 |
| Lume | Ultra | 52W | 100 |
CREATE TRIGGER BulbsStockTrigger ON Bulbs INSTEAD OF INSERT ASIF EXISTS (SELECT * FROM Bulbs AS b INNER JOIN inserted AS i ON b.Brand = i.Brand AND b.Model = i.Model WHERE b.Stock = 0) BEGIN UPDATE b SET b.Power = i.Power, b.Stock = i.Stock FROM Bulbs AS b INNER JOIN inserted AS i ON b.Brand = i.Brand AND b.Model = i.Model WHERE b.Stock = 0 END
| Brand | Model | Power | Stock |
|-------|----------|-------|-------|
| Ecco | Standard | 30W | 30 |
| Miry | Buma | 50W | 100 |
| Lume | Ultra | 52W | 100 |
| Ecco | Standard | 35W | 100 |
-- Eerste deel ingekort wegens ruimte
IF EXISTS (SELECT * FROM Bulbs AS b
INNER JOIN inserted AS i
ON b.Brand = i.Brand
AND b.Model = i.Model
WHERE b.Stock = 0)
BEGIN
UPDATE b
SET b.Power = i.Power,
b.Stock = i.Stock
FROM Bulbs AS b
INNER JOIN inserted AS i
ON b.Brand = i.Brand
AND b.Model = i.Model
WHERE b.Stock = 0
END
ELSE
INSERT INTO Bulbs
SELECT * FROM inserted;
Triggers in SQL Server bouwen en optimaliseren