📌 Создаем Базу Данных и две таблицы:
Create database trigerTARgv24;
USE trigerTARgv24;
Create table linnad(
linnID int PRIMARY KEY IDENTITY (1,1),
linnanimi varchar(15) NOT NULL,
rahvaarv int);
Create table logi(
id int PRIMARY KEY IDENTITY (1,1),
aeg DATETIME,
toiming varchar(100),
andmed TEXT
)
🔹INSERT TRIGER в таблице “linnad”:
CREATE TRIGGER linnaLisamine
ON linnad --tabelinimi, mis on vaja jälgida
FOR INSERT
AS
INSERT INTO logi(aeg, toiming, andmed)
SELECT
GETDATE(), --aeg
'on tehtud INSERT käsk', --toiming
inserted.linnanimi --andmed
FROM inserted;
📌 Управление действием триггера:
INSERT INTO linnad(linnanimi, rahvaarv)
VALUES ('Tallinn', 600000);
SELECT * FROM linnad;
SELECT * FROM logi;

SQL Triggeri Uuendamine (Изменение):
- Находим таблицу в базе данных;
- Откройте папку «Triggers»;
- Щелкните правой кнопкой мыши по нужному триггеру. Выбираем "Изменить".


Откроется диалоговое окно, в котором мы можем внести необходимые изменения и сохранить их.
Выделить ALTER TRIGGER –> Execute –> Команда выполнена

📌 Поменялся ввод данных в таблицу “logi”:

Tools –> Options –> Designers –> Table and Database Designers –> Убрать галочку

📌 Добавляем поле «kasutaja» в таблицу и сохраняем:


📌 Меняем триггер:
ALTER TRIGGER [dbo].[linnaLisamine]
ON [dbo].[linnad] --tabelinimi, mis on vaja jälgida
FOR INSERT
AS
INSERT INTO logi(kasutaja, aeg, toiming, andmed)
SELECT
SUSER_NAME(), --USER
GETDATE(), --aeg
'on tehtud INSERT käsk', --toiming
CONCAT('linn: ', inserted.linnanimi, ', elanike arv: ', inserted.rahvaarv) --andmed
FROM inserted;
📌 Добавляет пользователя, который внес в таблицу данные:

🔹DELETE TRIGER в таблице “linnad”:
CREATE TRIGGER linnaKustutamine
ON linnad --tabelinimi, mis on vaja jälgida
FOR DELETE
AS
INSERT INTO logi(kasutaja, aeg, toiming, andmed)
SELECT
SUSER_NAME(), --USER
GETDATE(), --aeg
'on tehtud DELETE käsk', --toiming
CONCAT('linn: ', deleted.linnanimi, ', elanike arv: ', deleted.rahvaarv) --andmed
FROM deleted;

🔹UPDATE TRIGER в таблице “linnad”:
CREATE TRIGGER linnaUuendamine
ON linnad --tabelinimi, mis on vaja jälgida
FOR UPDATE
AS
INSERT INTO logi(kasutaja, aeg, toiming, andmed)
SELECT
SUSER_NAME(),
GETDATE(),
'on tehtud UPDATE käsk',
CONCAT('vanad andmed -linn: ', deleted.linnanimi,
', elanike arv: ', deleted.rahvaarv,
'uued andmed -linn: ', inserted.linnanimi,
', elanike arv: ', inserted.rahvaarv)
FROM deleted
INNER JOIN inserted
ON deleted.linnID=inserted.linnID;

XAMPP Триггеры
Create table linnad(
linnID int Auto_increment PRIMARY KEY,
linnanimi varchar(15),
rahvaarv int);
Create table logi(
id int Auto_increment PRIMARY KEY,
aeg DATETIME,
toiming varchar(100),
andmed TEXT,
kasutaja varchar(50)
)

INSERT INTO logi(kasutaja, aeg, toiming, andmed)
VALUES(
NOW(),
‘on tehtud INSERT käsk’,
CONCAT(‘linn:’, new.linnanimi, ‘, elanike arv: ‘, new.rahvaarv)
)


Заполнить таблицу Linnad и проверяем таблицу Logi

✔️ Update:

Проверка:

✔️ DELETE:

Проверка:


🔹 Объединить триггеры INSERT и DELETE:
CREATE TRIGGER linnaLisamineJaKustutamine
ON linnad
AFTER INSERT, DELETE
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO logi(kasutaja, aeg, toiming, andmed)
SELECT
SUSER_NAME(),
GETDATE(),
'INSERT',
CONCAT('linn: ', inserted.linnanimi,
', elanike arv: ', inserted.rahvaarv)
FROM inserted
UNION ALL
SELECT
SUSER_NAME(),
GETDATE(),
'DELETE',
CONCAT('linn: ', deleted.linnanimi,
', elanike arv: ', deleted.rahvaarv)
FROM deleted;
END
--Läbivaatus
INSERT INTO linnad(linnanimi, rahvaarv)
VALUES ('Tartu', 50000);
DELETE FROM
linnad
WHERE
linnID=2;
SELECT * FROM linnad;
SELECT * FROM logi;
--Diaktiveerib päästiku
DISABLE TRIGGER linnaLisamine
ON linnad

1️⃣ Создаем таблицу “logitable”:


*️⃣ Создаем таблицу “autoregister”:


2️⃣ Заполняем таблицу “autoregister” данными:


3️⃣ Триггеры для фиксирования, добавления, удаления, изменения данных в таблице “autoregister”:
➖ Триггер на добавление:



➖Триггер на удаление:



➖Триггер на изменение данных:


