Triger/päästik (trigger) – protsess, mille abil tema sisse kirjutatuid tegevused (INSERT, DELETE, UPDATE) automaatselt käivitatakse.
SQL SERVER
CREATE DATABASE LitvinenkoTriggers;
USE LitvinenkoTriggers;
CREATE TABLE Linnad(
linnID int PRIMARY KEY IDENTITY(1, 1),
linnanimi varchar(15),
rahvaarv int
);
--tabel logi näitab adminile kuidas table linnad kasutatakse,
--tabel logi täidab triger
CREATE TABLE Logi(
id int PRIMARY KEY IDENTITY(1, 1),
aeg DATETIME,
toiming varchar(100),
andmed varchar(200),
kasutaja varchar(100),
);
Lisamine
--INSERT TRIGER, mis jälgib tabeli linnad täitmine
CREATE TRIGGER LinnaLisamine
ON Linnad FOR INSERT
AS
INSERT INTO Logi (aeg, kasutaja, toiming, andmed)
SELECT GETDATE(), SYSTEM_USER, 'Linn on lisatud', inserted.linnanimi FROM inserted;
--trigeri tegevuse kontroll
INSERT INTO Linnad(linnanimi, rahvaarv)
VALUES ('Tallinn', 650000);
SELECT * FROM Linnad;
SELECT * FROM Logi;

Kustatamine
--DELETE TRIGGER, jälgib linna kustatamine tabelis linnad
CREATE TRIGGER LinnaKustutamine
ON Linnad FOR DELETE
AS
INSERT INTO Logi (aeg, kasutaja, toiming, andmed)
SELECT GETDATE(), SYSTEM_USER, 'Linn on kustutatud', deleted.linnanimi FROM deleted;
--kontroll
DELETE FROM Linnad WHERE linnID = 1;

Uuendamine
--UPDATE TRIGGER
CREATE TRIGGER LinnaUuendamine
ON Linnad FOR UPDATE
AS
INSERT INTO Logi (aeg, kasutaja, toiming, andmed) SELECT
GETDATE(),
SYSTEM_USER,
'Linn on uuendatud',
CONCAT('vanad andmed: ', deleted.linnanimi, ', rahvaarv: ', deleted.rahvaarv, ' - uued andmed: ', inserted.linnanimi, ', rahvaarv: ', inserted.rahvaarv)
FROM deleted
INNER JOIN inserted ON
deleted.linnID = inserted.linnID;
--kontroll
UPDATE Linnad SET rahvaarv = 650001 WHERE linnID = 2;

DISABLE TRIGGER LinnaLisamine ON Linnad;
ENABLE TRIGGER LinnaLisamine ON Linnad;










XAMPP



Lisamine


Kustatamine


Uuendamine




