Trigerid: Kahe seotud tabelite põhjal

create database trigerTARpv23
use trigerTARpv23;

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

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


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

ALTER TABLE linnad ADD maakondID int;
ALTER TABLE linnad ADD CONSTRAINT fk_maakond
FOREIGN KEY (maakondID) References maakond(maakondID);


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


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

SELECT * FROM linnad;
SELECT * FROM logi;
create trigger linnaKustutamine
on linnad
for Delete
as
insert into logi(aeg,toiming,andmed,kasutaja)
select
getdate(),
'linn on Kustutatud',
concat(deleted.linnanimi,', ',m.maakond),
user
from deleted
inner join maakond m
on deleted.maakondID=m.maakondID


delete from linnad 
where linnID=1; 
SELECT * FROM linnad;
SELECT * FROM logi;
create trigger linnaUuendamine
on linnad
for update
as
insert into logi(aeg,toiming,andmed,kasutaja)
select
getdate(),
'linn on Uuendatud',
concat('Vanad andmed - ', deleted.linnanimi,', ',m1.maakond,
'; Uuendatud andmed - ', inserted.linnanimi, ', ', m2.maakond),
user
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

update linnad set linnanimi='Tallinn-Väike', maakondID=2
where linnID=2;


SELECT * FROM linnad;
SELECT * FROM logi;