Триггеры на основе двух связанных таблиц

create database triger2tabelid;
use triger2tabelid
/*Loo AB*/

/*Loo tabeli linnad */
Create table linnad(
linnID int PRIMARY KEY identity(1,1),
linnanimi varchar(15),
rahvaarv int);

/*Loo tabeli logi*/
Create table logi(
id int PRIMARY KEY identity(1,1),
aeg DATETIME,
toiming  varchar(100),
andmed text,
kasutaja varchar(200)
);


/*Loo tabeli maakond*/
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 tabeli linnad --> maakond*/
ALTER TABLE linnad ADD maakondID int;
ALTER TABLE linnad ADD CONSTRAINT fk_maakond
FOREIGN KEY (maakondID) References maakond(maakondID) 

Loo INSERT triger

--Loo insert triger
create trigger linaLisamine
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;

--Kontrollime
insert linnad(linnanimi, rahvaarv, maakondID)

values('Tallinn', 436863, 1)

select * from linnad
select * from logi;

Loo DELETE triger

'create trigger linaKustutamine
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 = 2;


select * from linnad 
select * from logi'

Loo UPDATE triger

create trigger linaUuendamine
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;

-- Kontrollime 

update linnad set linnanimi = 'Tallinn-Väike', maakondID = 2
where linnID=3;
select * from linnad 
select * from logi