Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
answer.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
54.69 Кб
Скачать
  1. Тригери. Застосування тригерів.

  1. Функції columnsupdated() та update () у тілі тригера.

CREATE TRIGGER trigger_name

ON { table | view }

[WITH ENCRYPTION]

}

{ {FOR|AFTER|INSTEAD OF} {[INSERT][,][UPDATE][,][DELETE]}

[WITH APPEND]

[NOT FOR REPLICATION]

AS

[ {IF UPDATE(column)

[ {AND|OR} UPDATE(column) ]

[ ...n ]

| IF (COLUMNS_UPDATED() {bitwise_operator} updated_bitmask)

{comparison_operator} column_bitmask [ ...n ]

[ {

sql_statement [ ...n ]

{

{

де

trigger_name – ім’я тригера

table|view – ім’я таблиці або вида, операції додання/вилучення/поновлення для якої повинні викликати

тригер

FOR|AFTER|INSTEAD OF – «для» / «після» / «замість»

INSERT, UPDATE, DELETE – тригер буде реагувати на «додання» / «поновлення» / «вилучення» записів

із таблиці/вида

IF UPDATE(column)[{AND|OR} UPDATE(column)] – тригер буде реагувати також і на додання або поновлення даних (але не на видалення) у конкретних полях таблиці/вида

IF (COLUMNS_UPDATED() {bitwise_operator} updated_bitmask –функція

COLUMNS_UPDATED() повертає значення типа varbinary – бітовий масів, з одиницями на місцях полів, дані

в яких були поновлені або додані; у тригера є можливість перевірити, які поля змінилися, за допомогою

маски

  1. Створення, зміна та видалення тригеру.

  1. Таблиці inserted та deleted.

Инструкции триггеров DML используют две особые таблицы: Таблицы deleted и inserted. SQL Server автоматически создает эти таблицы и управляет ими. Эти временные таблицы, находящиеся в оперативной памяти, используются для проверки результатов изменений данных и для установки условий срабатывания триггеров DML. Нельзя в этих таблицах изменять данные напрямую или выполнять над ними операции языка DDL, например инструкцию CREATE INDEX.

В триггерах DML таблицы inserted и deleted в основном используются для выполнения следующих операций.

Расширение ссылочной целостности между таблицами.

Вставка или обновление данных в базовых таблицах соответствующего представления.

Проверка на ошибки и принятие соответствующих мер в связи с появлением ошибок.

Поиск различий между состояниями таблицы до и после изменения данных и принятие соответствующих мер в зависимости от наличия или отсутствия различий.

В таблице deleted находятся копии строк, с которыми работали инструкции DELETE или UPDATE. При выполнении инструкции DELETE или UPDATE происходит удаление строк из таблицы триггера и их перенос в таблицу deleted. У таблицы deleted обычно нет общих строк с таблицей триггера.

В таблице inserted находятся копии строк, с которыми работали инструкции INSERT или UPDATE. При выполнении транзакции вставки или обновления происходит одновременное добавление строк в таблицу триггера и в таблицу inserted. Строки таблицы inserted являются копиями новых строк таблицы триггера.

Транзакция обновления аналогична выполнению операции удаления с последующим выполнением операции вставки; сначала старые строки копируются в таблицу deleted, а затем новые строки копируются в таблицу триггера и в таблицу inserted.

При задании условий триггера используйте таблицы inserted и deleted соответственно действию, заставившему триггер сработать. Хотя ссылка на таблицу deleted при проверке инструкции INSERT или ссылка на таблицу inserted при проверке инструкции DELETE не приводит к появлению ошибок, но данные тестовые таблицы триггера все равно не содержат в таких случаях никаких строк.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]