etru_RU

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

create database triger2tabelid;
use triger2tabelid;


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


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


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) 

select * from maakond ;
select * from linnad ;

Insert trigger

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;

Delete trigger

-- kustutamine

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;

Update trigger

-- uuesndamine

create trigger linnaUuendamine
on linnad
for update
as 
insert into logi(kasutaja, aeg, toiming, andmed)
select user, getdate(), 'linn on kustutatud', concat('Vanad andmed : ', deleted.linnanimi, ', ', m1.maakond,
'Uuendanud 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;
update linnad set linnanimi='Tallinn-Väike', maakondID=2
where linnID=2;

select * from linnad;

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *