
- •Поняття транзакції та блокування.
- •Правила acid. Атомарність, узгодженість, ізольованість, стійкість.
- •Типи неузгодженості даних при відсутності блокувань
- •Рівні блокувань за стандартом ansi (чотири).
- •Типи транзакцій. Явні, неявні та автоматичні транзакції.
- •Типи транзакцій. Розподілені транзакції.
- •Початок, завершення та відкат транзакції. Точка зберігання. (23)
- •Керування блокуваннями. Менеджер блокувань. Час очікування.
- •Рівні блокувань
- •Рівні ізоляції.
- •Типи блокувань
- •Мертві блокування.
- •Збережені процедури. Доцільність використання. Типи збережених процедур.
- •Етапи розробки збережених процедур.
- •Синтаксис створення, зміни, видалення та виклику збережених процедур
- •Використання параметрів у збережених процедурах.
- •Тригери. Застосування тригерів.
- •Функції columnsupdated() та update () у тілі тригера.
- •Створення, зміна та видалення тригеру.
- •Керування транзакціями в тілі тригера. Фіксація та відкат змін користувача.(7)
Тригери. Застосування тригерів.
Функції 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 – бітовий масів, з одиницями на місцях полів, дані
в яких були поновлені або додані; у тригера є можливість перевірити, які поля змінилися, за допомогою
маски
Створення, зміна та видалення тригеру.
Таблиці 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 не приводит к появлению ошибок, но данные тестовые таблицы триггера все равно не содержат в таких случаях никаких строк.