SQL Triggerid

Triger (päästik, trigger) – protsess, mille abil tema sisse kirjutatud tegevused automaatselt käivitatakse.

create table linnad(
linnID int primary key identity(1,1),
linnanimi varchar(15),
rahvaarv int
);
--tabel logi näitab adminile kuidas tabel 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)
);

Trigeri loomine

create trigger Nimi

Trigeri loomine, mis jälgib tabeli linnad täitmine

--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', 555);
select * from linnad;
select * from logi;

Näide: DELETE Triger

--delete triger, jälgib linna kustutamine 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;

Näide: UPDATE Triger

create trigger linnaUuendamine
on linnad
for update
as 
insert into logi(aeg, kasutaja, toiming, andmed)
select GETDATE(), SYSTEM_USER, 'linn on uuendatud', concat('vana: ', deleted.linnanimi, ', uus: ', inserted.linnanimi) from deleted
inner join inserted on deleted.linnID=inserted.linnID;

Trigeri välja/sees lülitame

disable trigger linnaLisamine on linnad;
enable trigger linnaLisamine on linnad;