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;