create database triger2tabelid;
use triger2tabelid;
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,
kasutaja varchar(100),
aeg DATETIME,
toiming varchar(100),
andmed varchar(200)
)
--DROP TABLE logi;
--DROP TABLE maakond;
--DROP TRIGGER linnaLisamine;
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
SELECT * FROM linnad
ALTER TABLE linnad ADD maakondID int;
ALTER TABLE linnad ADD CONSTRAINT fk_maakond
FOREIGN KEY (maakondID) References maakond(maakondID)
linnaLisamine
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
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;
UUENDAMINE
CREATE TRIGGER linnaUuendamine
ON linnad
FOR UPDATE
AS
INSERT INTO logi(kasutaja, aeg, toiming, andmed)
SELECT USER, GETDATE(), ' linn on muudatud',
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;
UPDATE linnad SET linnanimi='Tallinn-Väike', maakondID = 2
WHERE linnID=2;
SELECT * FROM linnad;
SELECT * FROM logi;
KONTROLL
INSERT INTO linnad(linnanimi, rahvaarv, maakondID)
Values ('Parnu', 436863, 1);
SELECT * FROM linnad;
SELECT * FROM logi;
DELETE FROM linnad
WHERE linnID=1;
UPDATE linnad SET linnanimi='Tallinn-Väike', maakondID = 2
WHERE linnID=2;
