Триггеры 2
Maakond tabeli lisamine
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’);
ALTER TABLE linnad ADD maakondID int;
ALTER TABLE linnad ADD CONSTRAINT fk_maakond
FOREIGN KEY (maakondID) References maakond(maakondID)
insert into linnad(linnanimi, rahvaarv, maakondID)
values (‘Parnu’, 65000, 2);
SELECT * FROM maakond;
SELECT * FROM linnad;

2. Создание связи
select l.linnanimi, l.rahvaarv, m.maakond
from linnad l
inner join maakond m
on l.maakondID=m.maakondID

3. Создание триггера
CREATE TRIGGER linnaLisamine2
on linnad
after insert
as
begin
insert into logi(aeg, toiming, sisestatud_andmed, kasutaja)
select GETDATE(),
‘linn on lisatud, maakond on valitud’,
CONCAT(inserted.linnanimi, ‘, ‘, m.maakond, ‘, ‘, inserted.rahvaarv),
user
from inserted
inner join maakond m
on inserted.maakondID=m.maakondID;
END
— kontrol
insert into linnad(linnanimi, rahvaarv, maakondID)
values (‘Elva’, 5000, 2);
SELECT * FROM maakond;
SELECT * FROM linnad;
SELECT * FROM logi;
4.
CREATE TRIGGER linnaUuendamine2
on linnad
for update
as
begin
insert into logi(aeg, toiming, sisestatud_andmed, kasutaja)
select GETDATE(),
‘linn on lisatud, maakond on valitud’,
CONCAT(‘Vanad andmed: ‘, deleted.linnanimi, ‘, ‘, m2.maakond, ‘\n Uued andmed ‘, inserted.linnanimi, ‘, ‘, m1.maakond),
user
from deleted
inner join inserted on deleted.linnID=inserted.linnID
inner join maakond m1 on inserted.maakondID=m1.maakondID
inner join maakond m2 on deleted.maakondID=m2.maakondID;
END
— kontroll
update linnad set maakondID=1, linnanimi=’Tallinn’
where linnID=2
SELECT * FROM logi;
SELECT * FROM maakond;
SELECT * FROM linnad;

Работа в XAMPP
Создаем доп таблицу

2.
insert into logi(aeg, toiming, sisestatud_andmed)
select NOW(), ‘linn on lisatud’,
CONCAT(
‘Uued andmed: ‘, NEW.linnanimi,’, ‘,NEW.rahvaarv,’, ‘, maakond),
from linnad l
inner join maakond m on l.maakondID=m.maakondID
WHERE l.linnID=NEW.linnID