SQL TRIGGERID

Triger on protsess, mille abil tema sisse kirjutatud tegevused automaatsel käivitatakse.

CREATE DATABASE TITtriger;

USE TITtriger;

–tabel, mida automaatselt täidab triger
CREATE TABLE logi(
id INT PRIMARY KEY IDENTITY(1,1),
tegevus VARCHAR(25),
kasutaja VARCHAR(25),
aeg DATETIME,
andmed TEXT)

–tabel, millega töötab kasutaja
CREATE TABLE puud(
puuID INT PRIMARY KEY IDENTITY(1,1),
puuNimi VARCHAR(25),
pikkus INT,
aasta INT)

INSERT INTO puud (puuNimi, pikkus, aasta) VALUES (‘Käsk’, 41, 12);

–Triger, mis jälgib tabeli puud täitmine(lisamine)
CREATE TRIGGER puuLisamine

ON puud

FOR INSERT

AS

INSERT INTO logi (kasutaja, tegevus, aeg, andmed)

SELECT

SYSTEM_USER,

‘puu on lisatud’,

GETDATE(),

CONCAT (inserted.puuNimi, ‘,’ ,inserted.pikkus , ‘,’ ,inserted.aasta)

FROM inserted;

–kontroll
INSERT INTO puud(puuNimi, pikkus, aasta)

VALUES (‘vaher’, 22, 2000);

SELECT * FROM puud;

SELECT * FROM logi;

DROP TRIGGER puuLisamine;

–triger, mis jälgib tabelis kustutamine
CREATE TRIGGER puuKustutamine

ON puud

FOR DELETE

AS

INSERT INTO logi(kasutaja, tegevus, aeg, andmed)

SELECT

SYSTEM_USER,

‘puu on kustatud’,

GETDATE(),

CONCAT(deleted.puuNimi, ‘,’ ,deleted.pikkus , ‘,’ ,deleted.aasta)

FROM deleted;

–kontroll
DELETE FROM puud WHERE puuID=1;

SELECT * FROM puud;

SELECT * FROM logi;

–triger, mis jälgib tabelis uuendamine
CREATE TRIGGER puuUuendamine

ON puud

FOR UPDATE

AS

INSERT INTO logi(kasutaja, tegevus, aeg, andmed)

SELECT

SYSTEM_USER,

‘puu on uuendatud’,

GETDATE(),

CONCAT(
‘ vana puu info – ‘, deleted.puuNimi, ‘,’ ,deleted.pikkus , ‘,’ ,deleted.aasta,
‘ uus puu info – ‘, inserted.puuNimi, ‘,’ ,inserted.pikkus , ‘,’ ,inserted.aasta
)

FROM deleted INNER JOIN inserted

ON deleted.puuID=inserted.puuID;

–kontroll
UPDATE puud SET pikkus=25555, aasta=1900

WHERE puuID=2;

SELECT * FROM puud;

SELECT * FROM logi;