Краткое содержание
Триггеры SQL — это мощный инструмент управления базами данных, который позволяет автоматизировать обработку данных, поддерживать их качество и согласованность. Они незаменимы при разработке сложных приложений и систем баз данных, где управление и контроль данных имеют критическое значение.
Триггеры SQL (или просто триггеры) — это объекты базы данных, которые автоматически выполняют определённые действия при возникновении определённых событий в таблице базы данных. Они особенно полезны для обеспечения целостности данных и реализации автоматических операций.
Основные характеристики триггеров SQL:
- Автоматическое выполнение:
Триггеры срабатывают автоматически при наступлении определённого события, например, при добавлении, изменении или удалении данных. - Типы триггеров:
- BEFORE-триггер: Выполняется перед выполнением операции с данными.
- AFTER-триггер: Выполняется после выполнения операции с данными.
- Цели и использование:
Триггеры полезны в различных случаях, например:- Создание систем журналирования и отслеживания изменений.
- Проверка и валидация данных перед их сохранением.
- Автоматическое отправление уведомлений.
- Целостность данных:
Триггеры помогают поддерживать целостность и согласованность данных, реализуя бизнес-логику, которая не всегда может быть учтена только структурой таблиц базы данных. - Централизация бизнес-логики:
Триггеры позволяют централизовать бизнес-логику, задавая определённые правила и процедуры в одном месте, вместо распределения их по разным приложениям или сервисам.
Итог
Триггеры SQL — это мощный инструмент управления базами данных, позволяющий автоматизировать обработку данных и обеспечивать их качество и согласованность. Они особенно важны при разработке сложных систем и приложений, где критически важно отслеживать и управлять данными.
Триггер — это процесс, который автоматически запускает заданные в нём действия при наступлении определённых условий.
create database trigerTARpv23; use trigerTARpv23; --loomine tabel toode create table toode( toodeId int primary key identity(1,1), toodeNimi varchar(50), hind int); -- loome tabeli mis täidab triger CREATE TABLE logi( id int primary key identity(1,1), kasutaja varchar(100), kuupaev datetime, sisestatudAndmed text);
INSERT TRIGER — triger, mis jälgib(отслеживает) anmdete lisamine tabelisse ja teeb vastava kirje tabelis logi.
INSERT TRIGER — триггер, который отслеживает (отслеживает) добавление данных в таблицу и записывает в журнал соответствующую запись в таблице.
CONCAT складывает предложение.
На добаление
CREATE TRIGGER toodeLisamine ON toode --tabel, mis jälgitakse FOR INSERT AS INSERT INTO logi(kasutaja, kuupaev, sisestatudAndmed) SELECT USER, GETDATE(), CONCAT('lisatud andmed ', inserted.toodenimi, ',', inserted.hind) FROM inserted

На удаление
CREATE TRIGGER toodeKustatumine ON toode --tabel, mis jälgitakse FOR DELETE AS INSERT INTO logi(kasutaja, kuupaev, sisestatudAndmed) SELECT USER, GETDATE(), CONCAT('Kustatud andmed: ', deleted.toodenimi, ',', deleted.hind) FROM deleted --kontrollimiseks kustatame toode tabelis toode DELETE FROM toode WHERE toodeId = 1; SELECT * FROM toode; SELECT * FROM logi;

На обновление
CREATE TRIGGER toodeUuendamine ON toode --tabel, mis jälgitakse FOR DELETE AS INSERT INTO logi(kasutaja, kuupaev, sisestatudAndmed) SELECT USER, GETDATE(), CONCAT('Kustatud andmed: ', deleted.toodenimi, ',', deleted.hind, 'Uued andmed:', inserted.toodenimi, ', ', inserted.hind) FROM deleted INNER JOIN inserted ON deleted.toodeId=inserted.toodeId --kontrollimseks uuendamine toode SELECT * FROM toode; UPDATE toode SET toodeNimi='orange melon' WHERE toodeId=2; SELECT * FROM toode; SELECT * FROM logi;


Ülesanne TV_shop
Создаем таблицу TV_Shop и вхрди в нее
CREATE DATABASE TV_Shop; USE TV_Shop;
Создание таблицы TV_baas
CREATE TABLE TV_baas ( TV_ID INT PRIMARY KEY IDENTITY(1,1), TV_mudel VARCHAR(100) NOT NULL, TV_suurus INT NOT NULL );
Таблица logi
-- таблица logi CREATE TABLE logi ( logiID INT PRIMARY KEY IDENTITY(1,1), kasutaja VARCHAR(100), kuupaev DATETIME DEFAULT GETDATE(), sisestatudAndmed TEXT );
— Триггер INSERT
-- триггер INSERT CREATE TRIGGER InsertTV ON TV_baas FOR INSERT AS INSERT INTO logi(kasutaja, kuupaev, sisestatudAndmed) SELECT USER, GETDATE(), CONCAT('Lisatud andmed: TV_mudel=', inserted.TV_mudel, ', TV_suurus=', inserted.TV_suurus) FROM inserted;
— триггер DELETE
-- триггера DELETE CREATE TRIGGER DeleteTV ON TV_baas FOR DELETE AS INSERT INTO logi(kasutaja, kuupaev, sisestatudAndmed) SELECT USER, GETDATE(), CONCAT('Kustatud andmed: TV_mudel=', deleted.TV_mudel, ', TV_suurus=', deleted.TV_suurus) FROM deleted;
— Триггер UPDATE
-- триггер UPDATE CREATE TRIGGER UpdateTV ON TV_baas FOR UPDATE AS INSERT INTO logi(kasutaja, kuupaev, sisestatudAndmed) SELECT USER, GETDATE(), CONCAT('Vana andmed: TV_mudel=', deleted.TV_mudel, ', TV_suurus=', deleted.TV_suurus, ' -> Uued andmed: TV_mudel=', inserted.TV_mudel, ', TV_suurus=', inserted.TV_suurus) FROM deleted INNER JOIN inserted ON deleted.TV_ID = inserted.TV_ID;
INSERT INTO TV_baas (TV_mudel, TV_suurus) VALUES ( ('za1', '120'), ('za2', '140'), ('za3', '250'), ('za4', '150'), ('za5', '200'));

UPDATE TV_baas SET TV_mudel='za6' WHERE toodeId=2;
DELETE FROM TV_baas WHERE TV_mudel='Alfreds Futterkiste';
XAMPP
Päästik

INSERT INTO
INSERT INTO logi(kasutaja, kuupaev, sisestatudAndmed) VALUES( USER(), NOW(), CONCAT('lisatud andmed ', NEW.toodenimi, ',', NEW.hind))

Kustutamine
INSERT INTO logi(kasutaja, kuupaev, sisestatudAndmed) VALUES( USER(), OLD(), CONCAT('lisatud andmed ', OLD.toodenimi, ',', OLD.hind))

Uuendamine
INSERT INTO logi(kasutaja, kuupaev, sisestatudAndmed) VALUES( USER(), NOW(), CONCAT('vanad andmed ', OLD.toodenimi, ',', OLD.hind, '\n uued andmed', NEW.toodenimi, ',', NEW.hind))

Создание даты базы TV_Shop
CREATE DATABASE TV_Shop; USE TV_Shop;
Создание таблицы TV_baas
CREATE TABLE TV_baas ( TV_ID INT PRIMARY KEY AUTO_INCREMENT, TV_mudel VARCHAR(100) NOT NULL, TV_suurus INT NOT NULL );