Posted in

SQL Trigerid

Содержание страницы

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *