Конспект
Триггер — Процесс, при помощи которого записанные в него действия будут выполнятся автоматически.
Пример — При помощи триггера автоматически заполняться таблица logi, в которой будет фиксироваться в какое время и какое действие выполнялось в таблице linnad.
Создаем БД и две таблицы:
Create table linnad(
linnID int PRIMARY KEY identity(1,1),
linnanimi varchar(15),
rahvaarv int);
-- logi tabel taidab vastav trigger
Create table logi(
id int PRIMARY KEY identity(1,1),
aeg DATETIME,
toiming varchar(100),
sisestatud_andmed TEXT
)
Create table linnad(
linnID int PRIMARY KEY identity(1,1),
linnanimi varchar(15),
rahvaarv int);
-- logi tabel taidab vastav trigger
Create table logi(
id int PRIMARY KEY identity(1,1),
aeg DATETIME,
toiming varchar(100),
sisestatud_andmed TEXT
)
Триггер на отслеживание добавленных в таблицу linnad записей

CREATE TRIGGER linna_lisamine
On linnad
After insert
As
Begin
insert into logi (aeg,toiming,sisestatud_andmed)
Select getdate(), 'uus linn on lisatud',
CONCAT(linnanimi, ' rahvaarv- ', rahvaarv)
From inserted;
End
-- kontroll
insert into linnad(aeg,toiming,sisestatud_andmed)
values(wqetwrtw,
wrtwrtm,
wrtwrt)
select * from linnad;
select * from logi;
Concat()- объединение данных из нескольких полей

Триггер на отслеживание удаленных в таблице linnad записей

CREATE TRIGGER linnKustutamine
On linnad
After insert
As
Begin
insert into logi (aeg,toiming,sisestatud_andmed)
Select getdate(), 'linn on kustutatud',
deleted.linnanimi
From deleted;
End
-- kontroll
delete from linnad where linnID=1;
select * from linnad;
select * from logi;
Триггер на отслеживание измененных записей в таблице linnad

CREATE TRIGGER linnUuendamine
On linnad
for update
As
Begin
insert into logi (aeg,kasutaja, toiming,sisestatud_andmed)
Select getdate(),
user,
'linn andmed on uuendatud',
concat(
'vanad andmed: ', d.linnanimi, 'rahvaarv - ', d.rahvaarv,
'uued andmed; ', i.linnanimi, ',', i.rahvaarv
)
From deleted d
inner join inserted i
on i.linnID=d.LinnID;
End
-- kontroll
update linnad set linnanimi='Tartu', rahvaarv=100
where linnID=4;
select * from linnad;
select * from logi;
В XAMPP

Самостоятельное задание
My SQL Server
Создание таблиц
CREATE TABLE autoRegistr (
id INT PRIMARY KEY IDENTITY(1,1),
color varchar(300),
gosNumber varchar(300),
mark varchar(300)
);
CREATE TABLE logitabel (
id INT IDENTITY(1,1) PRIMARY KEY,
toiming varchar(300),
aeg DATETIME,
auto_Andmed varchar(300)
);
Контроль добавления
--lisamine kontroll
CREATE TRIGGER autoRegistr_lisamine
ON autoRegistr
AFTER INSERT
AS
BEGIN
INSERT INTO logitabel (toiming, aeg, auto_Andmed)
SELECT 'Uus andmed on lisatud', GETDATE(), CONCAT(color, ', ', gosNumber, ', ', mark)
FROM inserted;
END;
-- kontroll
INSERT INTO autoRegistr (color, gosNumber, mark)
VALUES ('Red', 'ABC123', 'Toyota');
SELECT * FROM autoRegistr;
SELECT * FROM logitabel;
Удаление элементов управления
--kustutamine kontroll
CREATE TRIGGER autoRegistr_kustutamine
ON autoRegistr
AFTER DELETE
AS
BEGIN
INSERT INTO logitabel (toiming, aeg, auto_Andmed)
SELECT 'Andmed on kustutatud', GETDATE(), CONCAT(color, ', ', gosNumber, ', ', mark)
FROM deleted;
END;
-- kontroll
DELETE FROM autoRegistr
WHERE id = 1;
SELECT * FROM autoRegistr;
SELECT * FROM logitabel;
Контроль обновлений
--uuendamine kontroll
CREATE TRIGGER autoRegistr_muutmine
ON autoRegistr
AFTER UPDATE
AS
BEGIN
INSERT INTO logitabel (toiming, aeg, auto_Andmed)
SELECT 'Andmed on uuendamitud', GETDATE(), CONCAT(color, ', ', gosNumber, ', ', mark)
FROM inserted;
END;
-- kontroll
UPDATE autoRegistr
SET color = 'Blue'
WHERE id = 2;
SELECT * FROM autoRegistr;
SELECT * FROM logitabel;
XAMPP
Создание таблиц
Контроль добавления
Удаление элементов управления
Контроль обновлений