Trigerid kahe tabelite põhjal

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;

Scroll to Top