SQL Тригеры

Triger (päästik, trigger) — protsess, mille abil tema sisse kirjutatud tegevused (INSERT, DELETE, UPDATE) automaatselt käivitatakse.

Создание таблиц:

Create table linnad(
linnID int IDENTITY PRIMARY KEY,
linnanimi varchar(15),
rahvaarv int);

--tabel logi näitab adminile kuidas tabel linnad kasutatakse,
--tabel logi täidab triger
Create table logi(
id int IDENTITY PRIMARY KEY,
aeg DATETIME,
toiming  varchar(100),
andmed varchar(200),
kasutaja varchar (100)
)

—INSERT TRIGER, который отслеживает заполнение таблицы городов

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;

—DELETE TRIGER, отслеживает удаление города в таблице городов

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;
SELECT * FROM linnad;
SELECT * FROM logi;

—UPDATE

CREATE TRIGGER linnaUuendamie
ON linnad 
FOR UPDATE
AS
INSERT INTO logi(aeg, kasutaja, toiming, andmed)
SELECT 
GETDATE(),
SYSTEM_USER,
'linn on kustutatud',
CONCAT ('vanad andmed:', deleted.linnanimi, ' ,' ,deleted.rahvaarv,
' ||| uued andmed: ', inserted.linnanimi, ' ,',inserted.rahvaarv)
FROM deleted
INNER JOIN inserted
ON deleted.linnID=inserted.linnID;

--kontroll
UPDATE linnad SET rahvaarv=650001
WHERE linnID=2;
select * from linnad;
select * from logi;

XAMPP:

—INSERT TRIGER, который отслеживает заполнение таблицы городов

—UPDATE

—DELETE TRIGER, отслеживает удаление города в таблице городов