Триггер – это процедура, которая вызывается событием, а не пользователем, при вставке новой строки или при обновлении данных или при удалении данных.
Синтаксис
--создание триггера CREATE TRIGGER имя_триггера ON имя_таблицы INSTEAD OF | FOR | AFTER UPDATE | INSERT | DELETE AS BEGIN --инструкции END GO --модификация триггера ALTER TRIGGER имя_триггера ON имя_таблицы INSTEAD OF | FOR | AFTER UPDATE | INSERT | DELETE AS BEGIN --инструкции END GO --удаление триггера DROP TRIGGER имя_триггера --отключение триггера DISABLE TRIGGER имя_триггера ON имя_таблицы --включение триггера ENABLE TRIGGER имя_триггера ON имя_таблицы
Script.sql
--создание базы CREATE DATABASE zzz GO --выбор базы USE zzz GO --создание таблицы CREATE TABLE Book ( IDBook INT NOT NULL PRIMARY KEY IDENTITY(1, 1), Name NVARCHAR(50) NOT NULL, Amount INT NOT NULL, Price MONEY NOT NULL, --это поле должен автоматически заполнять триггер DateInsert DATETIME NULL ) GO --создание триггера CREATE TRIGGER myTrigger ON Book INSTEAD OF INSERT AS BEGIN /*при вставке данных, автоматически должно заполняться поле DateInsert*/ INSERT INTO Book(Name, Amount, Price, DateInsert) SELECT Name, Amount, Price, (CAST(CURRENT_TIMESTAMP AS DATETIME)) FROM inserted END GO --вставка данных INSERT INTO Book(Name, Amount, Price) VALUES (N'Азбука', 10, 10.15) --вывод данных SELECT Name, Amount, Price, DateInsert FROM Book
--создание базы CREATE DATABASE zzz GO --выбор базы USE zzz GO --создание таблицы CREATE TABLE Book ( IDBook INT NOT NULL PRIMARY KEY IDENTITY(1, 1), Name NVARCHAR(50) NOT NULL, Amount INT NOT NULL, Price MONEY NOT NULL, --это поле должен автоматически заполнять триггер DateInsert DATETIME NULL ) GO --создание триггера CREATE TRIGGER myTrigger ON Book INSTEAD OF INSERT AS BEGIN /*при вставке данных, автоматически должно заполняться поле DateInsert*/ INSERT INTO Book(Name, Amount, Price, DateInsert) SELECT Name, Amount, Price, (CAST(CURRENT_TIMESTAMP AS DATETIME)) FROM inserted END GO --вставка данных INSERT INTO Book(Name, Amount, Price) VALUES (N'Азбука', 10, 10.15) --вывод данных SELECT Name, Amount, Price, DateInsert FROM Book