SQL Server Trigerid seotud tabelite põhjal

Create database

create database triger2tabelid;

Create tabelid “Linnad + Logi+ Makoond”

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,
aeg DATETIME,
toiming  varchar(100),
andmed varchar(200)
)

CREATE TABLE maakond(
    maakondID int Primary KEY identity(1,1),
    maakond varchar(100) UNIQUE);

INSERT INTO + SELECT

INSERT INTO maakond(maakond)
VALUES ('Harjumaa');
INSERT INTO maakond(maakond)
VALUES ('Pärnumaa');

SELECT * FROM maakond

Seoste loomine

LTER TABLE linnad ADD maakondID int;
ALTER TABLE linnad ADD CONSTRAINT fk_maakond
FOREIGN KEY (maakondID) References maakond(maakondID) 

Create TRIGGER Insert

 CREATE TRIGGER linnaLisamine 
 ON linnad
 FOR INSERT
 AS
 INSERT INTO logi(kasutaja, aeg, toiming, andmed)
 SELECT USER, GETDATE(), 'linn in lisatud',
 CONCAT(l.linnanimi, ', ', m.maakond)
 From linnad l
 Inner join maakond m
 ON m.maakondID=l.maakondID

INSERT INTO + Select

kontroll

INSERT INTO linnad(linnanimi, rahvaarv, maakondID)
 Values ('Tallin', 436863, 1);
 
 SELECT * FROM linnad;
 SELECT * FROM logi;

TRIGGER Kustamine

  CREATE TRIGGER linnaKustamine
 ON linnad
 FOR DELETE
 AS
 INSERT INTO logi(kasutaja, aeg, toiming, andmed)
 SELECT USER, GETDATE(), 'linn on kustatud',
 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

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 deleted.maakondID=m2.maakondID

–kontroll

 UPDATE linnad SET linnanimi='Tallin-Väike' , maakondID=2
 WHERE linnID=2;
 SELECT * FROM linnad;