Реферат Курсовая Конспект
Тригери у Transact SQL - раздел Образование, Віртуальні таблиці візії. Перейменування атрибутів візії Для Аналізу Синтаксису Команди Create Trigger У Transact Sql Скористаємось Bo...
|
Для аналізу синтаксису команди CREATE TRIGGER у Transact SQL скористаємось Books Online (Пуск\Microsoft SQL Server\Books Online).
Рис.14.13. Як знайти опис команди CREATE TRIGGER у BOOKS ONLINE
Наведемо визначення синтаксису команди CREATE TRIGGER у Transact SQL.
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ {FOR | AFTER | INSTEAD OF } { [ INSERT ] [ ,] [ UPDATE ] }
[ 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 ]
}
}
Рис.14.14. Transact-SQL cинтаксис команди CREATE TRIGGER у BOOKS ONLINE
Рядки | Що вони містять |
CREATE TRIGGER trigger_name | Заголовок, назва тригера |
ON { table | view } | Ім’я таблиці або візії |
[ WITH ENCRYPTION ] | Тригер зачиняється від інших користувачів і не реплікується |
{ {FOR | AFTER | INSTEAD OF } { [ INSERT ] [ ,] [ UPDATE ] } | FOR еквівалентно AFTER, залишено для сумісності. Помилково пропущено слово [DELETE]. deleted and inserted – таблиці попередніх і нових даних. |
[ WITH APPEND ] | Для сумісності з версією 6.5. |
[ NOT FOR REPLICATION ] | Тригер не виконується при реплікації |
[ { IF UPDATE (column ) [ { AND | OR } UPDATE (column )] [ ...n ] | Перевірка, чи оновлювались колонки column |
| IF ( COLUMNS_UPDATED ( ){ bitwise_operator } updated_bitmask ) { comparison_operator } column_bitmask [ ...n ] | Визначення, чи оновлювався набір колонок, за допомогою бітової маски |
sql_statement [...n ] | Умови і дії тригера як послідовність команд Transact-SQL deleted and inserted – таблиці попередніх і нових даних. |
Усього опис з прикладами займає12 великих екранних сторінок.
Приклад 14.10. Використання тригера для нагадування за допомогою Email
USE pubs1) IF EXISTS (SELECT name FROM sysobjects2) WHERE name = 'reminder' AND type = 'TR')3) DROP TRIGGER reminder4) GO5) CREATE TRIGGER reminder6) ON titles7) FOR INSERT, UPDATE, DELETE 8) AS9) EXEC master..xp_sendmail 'MaryM', 10) 'Don''t forget to print a report for the distributors.'11) GO
Рис.14.15. Використання тригера для нагадування за допомогою Email
У цьому прикладі рядки 1-4 забезпечують видалення попередньої версії тригера. Будь-які зміни відношення titles (рядки 6,7) тягнуть відсилання Email адресату 'MaryM' з нагадуванням про необхідність роздрукувати звіт.
xp_sendmail відсилає вказаному адресату листа та приєднує результати виконання запиту. Опис xp_sendmail займає 4 великих екранних сторінки.
Команда GO (рядки 4, 11) формує пакет (від GO до GO). Пакет виконується по одному плану виконання, хоча не є транзакцією.
Приклад 14.11. ([8], стор.293). Нехай відношення Books містить перелік книг, а відношення BookOrders фіксує факти продажу книг. Якщо книга продана, у відношення BookOrders додається кортеж, і тоді у відношення Books в атрибуті sold треба поставити 1.
CREATE TRIGGER dbo.update_book_status
ON dbo.bookOrders
AFTER INSERT
AS
UPDATE Books
SET sold=1
WHERE titleId=
(SELECT bo.titleId
FROM bookOrders bo INNER JOIN inserted i
ON bo.orderId=i.orderId)
Рис.14.16. Приклад тригера для оновлення іншого відношення в разі вставки.
В передостанньому рядку використане відношення inserted, по якому ми визначаємо Id щойно проданої книги, та оновлюємо відповідний кортеж у Books. Напряму звернутись до inserted не можна, треба його з’єднати з іншим відношенням.
– Конец работы –
Эта тема принадлежит разделу:
Перейменування атрибутів візії... Нехай ми маємо намір надати атрибутам візії імена відмінні від успадкованих...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Тригери у Transact SQL
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов