SQL trigger on spetsiaalne andmebaasi objekt mis mäivitab automaatselt teatud sündmus ( nt INSERT, UPDATE, DELETE). Trigerid aitavad automatiseerida protsessid andmebaasis.
SQL Server.
1.Loome andmebaasi ja kaks tabelit 1.tabel – kuhu kasutaja sisestab andmeid (linnad). 2.tabel -logi kus triger lisab jälgitud andmeid
CREATE DATABASE trigerMihkel
use trigerMihkel
--tabel linnad
create table linnad(
linnId int primary key identity(1,1),
linnanimi varchar(50) unique,
rahvaarv int not null);
--tabel logi
CREATE TABLE logi(
Id int primary key identity(1,1),
kuupaev datetime,
andmed TEXT);
2. trigeri loomine
INSERT TRIGGER, mis jälgib andmete lisamine tabelisse linnad.
Create TRIGGER linnaLisamine
on linnad
for insert
As
insert into logi(kuupaev, andmed)
Select
getdate(),
CONCAT ('lisarud linn: ', inserted.linnanimi,
' | rahvaarv: ', inserted.rahvaarv, ' id: ', inserted.linnId)
from inserted;

3. trigeri loomine
delete trigger , mis jälgib andmete kustutamist.
--delete trigger
Create TRIGGER linnaLkustutamine
on linnad
for delete
As
insert into logi(kuupaev, andmed)
Select
getdate(),
CONCAT ('kustutatud linn: ', deleted.linnanimi,
' | rahvaarv: ', deleted.rahvaarv, ' id: ', deleted.linnId)
from deleted ;

4.trigeri loomine
Update triger
CREATE TRIGGER linnaUuendamine
on linnad
For update
as
insert into logi(kuupaev, andmed)
select
GETDATE(),
CONCAT (' vana linna andmed: ', d.linnanimi,
' | ', d.rahvaarv, ' | id: ', d.linnId,
' vana linna andmed: ', i.linnanimi,
' | ', i.rahvaarv, ' | id: ', i.linnId)
from deleted d inner join inserted i
on d.linnId=i.linnId

Koostame samad trigerid XAMPP
1.insert trigger

2.DELETE trigger

3.Update trigger

Tagasi sql serveris teeme trigeri mis on isert ja delete ühes
Create TRIGGER linnaLisamineKustutamine
on linnad
for insert, DELETE
As
begin
SET NOCOUNT ON;
insert into logi(kuupaev, andmed, kasutaja)
Select
getdate(),
CONCAT ('lisarud linn: ', inserted.linnanimi,
' | rahvaarv: ', inserted.rahvaarv, ' id: ', inserted.linnId),
SYSTEM_USER
from inserted
UNION ALL
SELECT
getdate(),
CONCAT ('kustutatud linn: ', deleted.linnanimi,
' | rahvaarv: ', deleted.rahvaarv, ' id: ', deleted.linnId),
SYSTEM_USER
from deleted ;
end;

Iseseisev töö
1.Insert triger
