Tabelid
- Loo tabel puu (puuID, puuNimi, kirjeldus, pikkus).
- Loo tabel logi triggerite töö jälgimiseks: (logiID, kuupäev, toiming, andmed, kasutaja).
- Loo tabel puuLeht ja lisa välisvõtme seos tabeliga puu:


Triggerid
- Loo tabeli puu jaoks triggerid, mis jälgivad sisestamist, muutmist ja kustutamist.
- Loo triggerid, mis jälgivad kahe seotud tabeli (puu ja puuLeht) andmete muutumist.
Puu tabeli triggerid
Puu Lisamine trigger
CREATE TRIGGER PuuLisamiseLogi
ON puu
FOR INSERT
AS
BEGIN
INSERT INTO logi (kasutaja, tegevus, kirjeldus)
SELECT
SYSTEM_USER,
'Puu on lisatud',
CONCAT('Puu nimi: ', nimi, ', puu kirjeldus: ', kirjeldus, ', puu pikkus: ')
FROM inserted;
END;-- Lühikood
INSERT INTO puu (puukimi, kirjeldus, pikkus) VALUES
('Tamm', 'Suur ja tugev tammepuu', 25.4),
('Kask', 'Kõrge ja hele kask', 18.7),
('Mänd', 'Igihaljas männipuu', 20.1);kontrollida:

Puu kustutamine trigger
CREATE TRIGGER PuuKustutamiseLogi
ON puu
FOR DELETE
AS
BEGIN
INSERT INTO logi (kasutaja, tegevus, kirjeldus)
SELECT
SYSTEM_USER,
'Puu on kustutatud',
CONCAT('PuuID=', deleted.puuID, ', puuNimi=', deleted.puuNimi)
FROM deleted;
END;Provida:
delete from puu where puuID=1
Puu tabeli värskendada trigger
CREATE TRIGGER PuuUpdate
ON puu
FOR UPDATE
AS
BEGIN
INSERT INTO logi (kasutaja, tegevus, kirjeldus)
SELECT
SYSTEM_USER,
'puu on muudetud',
CONCAT('puuID=', inserted.puuID, ', uus puuNimi=', inserted.puuNimi, ', uus kirjeldus=', inserted.kirjeldus, ', uus pikkus=', )
FROM inserted;
END;Provida:
UPDATE puu
SET kirjeldus = 'Väga vana tammepuu, mis on üle 100 aasta vana', pikkus = 30.0
WHERE puuID = 4;
PuuLehtLisamine:
-- Lühikood
CREATE TRIGGER puulehtLisamiseLogi
ON puuleht
AFTER INSERT
AS
BEGIN
INSERT INTO logi (kasutaja, tegevus, kirjeldus)
SELECT
SYSTEM_USER,
'puuleht on lisatud',
CONCAT('puulehtID=', i.puulehtID, ', lehtidis=', i.lehtidis, ', viide puule puuID=', i.puuID)
FROM inserted i;
END;
GOProvida:


PuuLehtMuudatus
CREATE TRIGGER puuLehtMuudatus
ON puuLeht
AFTER UPDATE
AS
BEGIN
INSERT INTO logi (kasutaja, tegevus, kirjeldus)
SELECT
SYSTEM_USER,
'puuLeht on muudetud',
CONCAT(
'puuLehtID=', i.puuLehtID,
', lehtNimi vana=', d.lehtNimi, ' uus=', i.lehtNimi,
', puuID vana=', d.puuID, ' uus=', i.puuID
)
FROM inserted i
INNER JOIN deleted d ON i.puuLehtID = d.puuLehtID;
END;
GO
Provida:

PuuLehtKustutamine

CREATE TRIGGER puuLehtKustutamine
ON puuLeht
AFTER DELETE
AS
BEGIN
INSERT INTO logi (kasutaja, tegevus, kirjeldus)
SELECT
SYSTEM_USER,
'puuLeht on kustutatud',
CONCAT(
'puuLehtID=', d.puuLehtID,
', lehtNimi=', d.lehtNimi,
', viide puule puuID=', d.puuID
)
FROM deleted d;
END;
GO
Provida:

