Trigerid kahe seotud tabelite põhjal

Loonud 2 tabelit

create database trigeri2tabelid;
use trigeri2tabelid;

--Loo tabel linnad
Create table linnad(
linnID int identity(1,1) PRIMARY KEY,
linnanimi varchar(15),
rahvaarv int);

--Loo tabel logi
Create table logi(
id int identity(1,1) PRIMARY KEY,
aeg DATETIME,
toiming  varchar(100),
andmed text,
kasutaja varchar(200)
)

CREATE TABLE maakond(
maakondID int Primary KEY identity(1,1),
maakond varchar(100) UNIQUE);
    
INSERT INTO maakond(maakond)
VALUES ('Harjumaa');
INSERT INTO maakond(maakond)
VALUES ('Pärnumaa');

SELECT * FROM maakond

--seoste loomine linnad/maakond
ALTER TABLE linnad ADD maakondID int;
ALTER TABLE linnad ADD CONSTRAINT fk_maakond
FOREIGN KEY (maakondID) References maakond(maakondID) 

loonud trigeri linnaLisamine

create trigger linnaLisamine
on linnad
for insert
as
insert into logi(kasutaja,aeg,toiming,andmed)
select USER, GETDATE(),'linn on lisatud',CONCAT(l.linnanimi, ', ', m.maakond)
from linnad l
inner join maakond m
on m.maakondID=l.maakondID;

--kontrollimiseks
insert into linnad(linnanimi,rahvaarv,maakondID)
values ('Tallinn', 436863, 1);

select * from linnad
select * from logi

loonud trigeri linnaKustutamine

create trigger linnaKustutamine
on linnad
for delete
as
insert into logi(kasutaja,aeg,toiming,andmed)
select USER, GETDATE(),'linn on kustutatud',CONCAT(deleted.linnanimi, ', ', m.maakond)
from deleted
inner join maakond m
on deleted.maakondID=m.maakondID;

--kontroll
delete from linnad
where linnID=1
select * from linnad
select * from logi

loonud trigeri linnaUuendamine

create trigger linnaUendamine
on linnad
for update
as
insert into logi(kasutaja,aeg,toiming,andmed)
select USER, GETDATE(),'linn on uuendatud',CONCAT(
'vanad andmed - ', deleted.linnanimi, ', ', m1.maakond,
'uuendatud andmed - ', inserted.linnanimi,', ', m2.maakond)
from deleted
inner join inserted on deleted.linnID=inserted.linnID
inner join maakond m1 on deleted.maakondID=m1.maakondID
inner join maakond m2 on inserted.maakondID=m2.maakondID;

--kontroll
update linnad set linnanimi='Tallinn-Suur', maakondID=2
where linnID=2;
select * from linnad;
select * from logi