SQL
--Loome tabeli linnad
Create table linnad(
linnID int identity(1,1) PRIMARY KEY,
linnanimi varchar(15),
rahvaarv int);
--Loome tabeli logi
Create table logi(
id int identity(1,1) PRIMARY KEY,
aeg DATETIME,
toiming varchar(100),
andmed text,
kasutaja varchar(200));
SQL
--loome 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');
SQL
--seoste loomine linnad--maakonad
ALTER TABLE linnad ADD maakondID int;
ALTER TABLE linnad ADD CONSTRAINT fk_maakond
FOREIGN KEY (maakondID) References maakond(maakondID)
Trigerite loomine
SQL
--trigger linnade lisamiseks
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;
SQL
--trigger linnade kustutamiseks
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;
--kontrollimiseks
delete from linnad
WHERE linnID = 1;
select * from linnad
select * from logi
SQL
--Trigger linnade uuendamiseks
Create trigger linnaUuendamine
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-Väike', maakondID=2
WHERE linnID = 2;
select * from linnad
select * from logi
