SQL Server
Tegeme tabeli
Tabel logi täidab ainult triger
CREATE DATABASE tsikvasviliTrigerid;
USE tsikvasviliTrigerid;
Create table linnad(
linnID int IDENTITY(1,1) PRIMARY KEY,
linnanimi varchar(15),
rahvaarv int);
--tabel logi ainult triger
Create table logi(
id int IDENTITY(1,1) PRIMARY KEY,
aeg DATETIME,
toiming varchar(100),
andmed varchar(200),
kasutaja varchar(100)
);
Tegeme trigeri
Jälgib tabeli linnad täitmine
CREATE TRIGGER linnaLisamine
ON linnad
FOR INSERT
AS
INSERT INTO logi(aeg, kasutaja, toiming, andmed)
SELECT GETDATE(), SYSTEM_USER, 'linn on lisatud', inserted.linnanimi FROM inserted;
Modify triger
SELECT GETDATE(), SYSTEM_USER, 'linn on lisatud', CONCAT(inserted.linnanimi, ', rahvaarv:', inserted.rahvaarv) FROM inserted;
Kontrollime
INSERT INTO linnad (linnanimi, rahvaarv)
VALUES ('Tallinn', 650000)
SELECT * FROM linnad
SELECT * FROM logi

Triger linna kustutamine
jälgib tabeli linnad kustutamiseks
CREATE TRIGGER linnaKustutamine
ON linnad
FOR INSERT
AS
INSERT INTO logi(aeg, kasutaja, toiming, andmed)
SELECT GETDATE(), SYSTEM_USER, 'linn on kustutatud', deleted.linnanimi FROM deleted;
Kontrollime
DELETE FROM linnad WHERE linnID=1;
SELECT * FROM linnad;
SELECT * FROM logi;

Triger linna uuendamine
CREATE TRIGGER linnaUuendamine
ON linnad
FOR UPDATE
AS
INSERT INTO logi(aeg, kasutaja, toiming, andmed)
SELECT GETDATE(), SYSTEM_USER, 'linn on uuendatud', CONCAT('Vanad andmed: ', deleted.linnanimi, ', ', deleted.rahvaarv,
'Uued andmed: ', inserted.linnanimi, ', ', inserted.rahvaarv) FROM deleted
INNER JOIN inserted ON deleted.linnID = inserted.linnID;
Kontrollime
UPDATE linnad SET rahvaarv=100001 WHERE linnID=2;
SELECT * FROM linnad;
SELECT * FROM logi;

Trigerid XAMPPis
Linna lisamine


Linna uuendamine


Linna kustutamine

