Створення|створіння| тригерів|трігерів| і керування ними (Тут додати що таке тригер і як він використовується) icon

Створення|створіння| тригерів|трігерів| і керування ними (Тут додати що таке тригер і як він використовується)




Скачати 194.58 Kb.
НазваСтворення|створіння| тригерів|трігерів| і керування ними (Тут додати що таке тригер і як він використовується)
Дата конвертації31.03.2013
Розмір194.58 Kb.
ТипДокументи
1. /Конспект лекций/Использование SQL Server Management Studio.doc
2. /Конспект лекций/Лекция 0. Знайомство з SQL Server 2005.doc
3. /Конспект лекций/Лекция 1. Створення й керування базою даних SQL Server (short).doc
4. /Конспект лекций/Лекция 2. Синтаксичн_ елементи мови.doc
5. /Конспект лекций/Лекция 3. Виб_рка даних з бази даних.doc
6. /Конспект лекций/Лекция 4. Модиф_кац_я даних у базах даних SQL Server.doc
7. /Конспект лекций/Лекция 5. Збережен_ процедури.doc
8. /Конспект лекций/Лекция 5. Створення тригер_в _ керування ними ними.doc
9. /Конспект лекций/Мова SQL.Doc
10. /Конспект лекций/Создание триггеров и управление ими.doc
11. /Конспект лекций/Ц_л_сн_сть даних (short).doc
12. /Лабораторна робота малий формат.doc
Что такое sql server
Лекція Основи роботи з Microsoft sql| Server| 2005 Питання лекції Основні
Лекція Створення І керування базою даних sql server
Синтаксичні елементи мови Transact-sql
Вибірка даних з бази даних sql server
Модифікація даних у базах даних sql server
Збережені процедури
Створення|створіння| тригерів|трігерів| і керування ними (Тут додати що таке тригер і як він використовується)
Курс лекцій ( частина 1 ) для студентів спеціальності
Создание триггеров и управление ими
Цілісність даних
Методичні рекомендації для виконання лабораторних робіт для студентів спеціальності

Створення|створіння| тригерів|трігерів| і керування ними

(Тут додати що таке тригер і як він використовується)

Настав час познайомится з|із| методами створення|створіння| тригерів|трігерів| і керування ними. Як правило, для створення|створіння| тригерів|трігерів| і керування ними використовується вікно редактору запитів|. Для створення|створіння| тригера|трігера| служить оператор CREATE| TRIGGER|. В процесі створення|створіння| тригер|трігер| прив'язується до таблиці або відображення|вистави|. Створений тригер|трігер| можна модифікувати засобами|коштами| оператора ALTER| TRIGGER|. Перейменування і огляд тригерів|трігерів| здійснюється| за допомогою системних процедур, що зберігаються, або SQL Server Management Studio|.

Для видалення|віддалення| тригера|трігера| використовується оператор DROP| TRIGGER|, а для включення|приєднання| і виключення тригерів|трігерів| — оператор ALTER| TABLE|.


Створення|створіння| тригерів|трігерів| за допомогою мови|язика| TRANSACT-SQL|

При використанні оператора CREATE| TRIGGER| необхідно задати ім'я тригера|трігера|, таблицю або відображення|виставу|, до якого буде прив'язаний тригер|трігер|, клас (INSTEAD| OF| або AFTER|), подія або події, що викликають|спричиняють| спрацьовування тригера|трігера|, і завдання|задачу|, яке він повинен виконувати. Також можна (але|та| не обов'язково) задати необхідність реплікації або шифрування тригера|трігера|.

Ось|от| основні конструкції оператора CREATE| TRIGGER|:

CREATE TRIGGER ім’я__тригера

ON ім’я_таблиці або ім’я_відображення

FOR клас_триггера і тип(и) _тригера

AS оператори TRANSACT-SQL


У цьому розділі детально обговорюються конструкції CREATE| TRIGGER|, ON| і FOR/AFTER/INSTEAD OF| і показані приклади|зразки| їх використання. Далі оператори TRANSACT-SQL|, розташовані|схильні| після|потім| конструкції AS|. За докладнішими|детальними| відомостями про конструкції, які тут не показані, звертайтеся|обертайтеся| до SQL| Server| Books| Online|.


Конструкція CREATE| TRIGGER|

Тригер створюється конструкцією CREATE TRIGGER, за якою слідує ім'я тригера.Тригери не допускають вказівки імені бази даних у вигляді префікса імені об'єкту. Тому перед створенням тригера необхідно вибрати потрібну базу даних за допомогою конструкції USE ім’я_базы_данных і ключового слова GO. Ключове слово GO потрібне, посколькуоператор CREATE TRIGGER має бути першим в пакеті. Право на створення тригерів за умовчанням належить власникові таблиці. Краще створювати таблиці, тригери і інші об'єкти бази даних так, щоб їх власником був dbo. Наприклад, наступний код TRANSACT-SQL дозволяє створити тригер Alerter в базі даних BookShopDB:


USE| BookShopDB|

GO|

CREATE| TRIGGER| dbo|.alerter


Імена тригерів|трігерів| повинні підкорятися правилам, визначеним для ідентифікаторів. Наприклад, щоб|аби| створити тригер|трігер| Alerter| for| the| Employees| Table|, слід укласти його ім'я в квадратні дужки:

CREATE| TRIGGER| dbo|.[alerter| for| employees| table|]


При адмініструванні тригерів|трігерів|, наприклад при їх видаленні|віддаленні|, необхідно слідувати|прямувати| правилам для ідентифікаторів.


Конструкція ON|

Тригер|трігер| необхідно прив'язати до таблиці або відображення|вистави|. Конструкція ON| дозволяє вказати таку таблицю або відображення|виставу|, які після|потім| прив'язки називаються таблицею тригера|трігера| або представленням тригера|трігера| відповідно. Для узгодженості|погодженості| після|потім| конструкції ON| слід вказувати|вказувати| власника таблиці або відображення|вистави|. Наприклад, наступний|такий| код TRANSACT-SQL| прив'язує тригер|трігер| Alerter| до таблиці Employees| (обидва об'єкти, тригер|трігер| і таблиця, належать dbo|):

CREATE| TRIGGER| dbo|.alerter

ON| dbo|.employees


Будь-який тригер|трігер| можна прив'язати тільки|лише| до однієї таблиці або відображення|вистави|. Щоб|аби| прив'язати до іншої таблиці тригер|трігер|, що виконує те ж саме завдання|задачу|, слід створити новий тригер|трігер| з|із| іншим ім'ям, але|та| з|із| тією ж самою бізнес-логікою і прив'язати його до іншої таблиці. AFTER-триггеры| (цей клас заданий за умовчанням) дозволено прив'язувати тільки|лише| до таблиць, а тригери|трігери| нового класу INSTEAD| OF| — як до таблиць, так і до відображень|вистав|.


Конструкції FOR|, AFTER| і INSTEAD| OF|

При створенні|створінні| тригера|трігера| слід задати тип|тип| події, що викликає|спричиняє| його спрацьовування. Типів події три: INSERT|, UPDATE| і DELETE|. Один і той же тригер|трігер| може спрацювати на одне, два або всі три події. Якщо необхідно, щоб|аби| він спрацьовував на всі події, то після|потім| конструкцій FOR|, AFTER| або INSTEAD| OF| слід помістити всі три ключові|джерельні| слова: INSERT|, UPDATE| і DELETE| у будь-якому порядку. Наприклад, наступний|слідуючий| код TRANSACT-SQL| примушує|заставляє| тригер|трігер| Alerter| спрацьовувати на всі події:

CREATE| TRIGGER| dbo|.alerter

ON| dbo|.employees

FOR| INSERT|, UPDATE,| DELETE|


Конструкція FOR| - синонім AFTER|. Тому приведений вище код створює ALTER| тригер|трігер|. Щоб|аби| створити тригер|трігер| Alerter| як INSTEAD| OF|, використовуйте наступний|слідуючий| код:

CREATE| TRIGGER| dbo|.alerter

ON| dbo|.employees

INSTEAD| OF| INSERT|, UPDATE|, DELETE|


Звернете увагу, що замість конструкції FOR| застосовується конструкція INSTEAD| OF|.


Конструкція AS|

Конструкція AS| і наступні|слідуючі| за нею команди мови|язика| TRANSACT-SQL| визначають завдання|задачу|, яке виконуватиме тригер|трігер|. Нижче наводиться приклад створення|створіння| тригера|трігера| Alerter|, який посилає по електронній пошті повідомлення|сполучення| користувача Hello, якщо в таблиці employees| відбуваються|походять| події INSERT|, UPDATE| або DELETE|:

USE| BookShopDB|

GO|

CREATE| TRIGGER| dbo|.alerter

ON| dbo|.employees

AETER| INSERT|. UPDATE|, DELETE|

AS|

EXEC| master|..xp_sendmail 'Hello'.

'A record| was| just| inserted|, updated| or| deleted| in| the| Employees| table|'

GO

|

Приклад|зразок| ми спростили, щоб|аби| ясніше продемонструвати створення|створіння| завдання|задачі| у тригері|трігері|. Є декілька способів зробити результати завдання|задачі| кориснішими. Наприклад, запрограмувати завдання|задачу| так, щоб в поштовому повідомленні|сполученні| відображувалися|відображали| докладні|детальні| відомості про внесені зміни.


Управління тригерами|трігерами|

Тригери|трігери| — це потужні|могутні| об'єкти бази даних, які автоматично виконуються при модифікації таблиці або відображення|вистави|. Для управління тригерами|трігерами| призначена низка|низка| команд і інструментів баз даних. Тригери можна:

  • модифікувати за допомогою оператора ALTER| TRIGGER|;

  • перейменувати засобами|коштами| системної процедури sp_rename|, що зберігається;

  • проглянути шляхом запиту системних таблиць або з використанням системних збережених процедур sp_helptrigger| або sp_helptext|;

  • видаляти|віддаляти| за допомогою оператора DROP| TRIGGER|;

  • включити або вимкнути за допомогою конструкцій DISABLE| TRIGGER| і ENABLE| TRIGGER| оператора ALTER| TABLE.|

Зміна і перейменування тригерів

Для модифікації тексту тригер|трігер| можна видалити|віддаляти| і відтворити з|із| новим текстом. Інший спосіб, без видалення|віддалення|, полягає у використанні оператора ALTER| TRIGGER|. Синтаксис цього оператора аналогічний синтаксису оператора CREATE| TRIGGER|, але|та| ALTER| TRIGGER| не видаляє|віддаляє| тригер|трігер| з|із| системних таблиць SysComments| і SysObjects|. У наступному|слідуючому| прикладі|зразку| показано, як модифікувати тригер|трігер| Alerter| так, щоб він повідомив тільки|лише| про оновлення записів в таблиці Employees|:

ALTER| TRIGGER| dbo|.alerter

ON| dbo|.employees

AFTER| UPDATE|

AS|

EXEC| master|..xp_sendmail 'Barry"

|'A record| was| just| updated| in| the| Employees| table|.'

GO|


Зверніть увагу, що після|потім| конструкції AFTER| вказана тільки|лише| одне подія UPDATE|, а також зверніть увагу на зміни в тексті повідомлення|сполучення|.

Інколи|іноді| нові угоди про іменування вимагають перейменувати тригер|трігер|, це також буває необхідно при реалізації в таблиці декількох тригерів|трігерів|. Для перейменування тригера|трігера| застосовують системну збережену процедуру sp_rename|. У наступному|слідуючому| прикладі|зразку| показано, як перейменувати тригер|трігер| Alerter| в EmpAlerter|:

sp_rename| @objname = alerter| @newname = empalerter|


Зверніть увагу, що в синтаксисі перейменування не вказаний dbo|. Системна збережена процедура sp_rename| не дозволяє передати тригер|трігер| іншому власникові. Щоб|аби| змінити|зраджувати| власника тригера|трігера|, слід використовувати оператора CREATE| TRIGGER|. Перейменувавши вкладений тригер|трігер|, обов'язково модифікуйте і тригер, який його викликає -|трігер| у ньому має бути вказане вірне ім'я вкладеного тригера|трігера|.


Перегляд|проглядати|, видалення|віддалення| і відключення тригерів|трігерів|

При створенні|створінні| тригера|трігера| його ім'я і інші ідентифікаційні дані записуються|занотовують| в системну таблицю SysObjects| поточної бази даних. Текст тригера|трігера| записується|занотовує| в системну таблицю SysComments|. Наступний|слідуючий| оператор SELECT| покаже всі тригери|трігери|, створені до таблиць бази даних BookShopDB|:

select| * from| bookshopdb|.SysObjects where| type| - 'tr|'


Тригери|трігери| завжди помічені|позначити| в стовпці type| значенням tr|.

Для виведення властивостей тригера|трігера| використовується системна процедура sp_helptrigger||, що зберігається. Наприклад, щоб|аби| вивести властивості всіх тригерів|трігерів|, визначених для таблиці Employees|, наберіть наступну|слідуючу| команду:


sp_helptrigger| @tabname = employees|


Щоб|аби| побачити вміст тригера|трігера|, необхідно зробити запит до стовпця Text| системної таблиці SysComments|. Системнаяхранімая процедура sp_helptext| виводить інформацію в більш організованому вигляді|виді|. Наприклад, для виведення тексту тригера|трігера| alerter| наберіть наступну|слідуючу| команду:


sp_helptext| @objnarne = alerter|


Для проглядання тексту тригера|трігера| також використовують опцію Manage| Triggers| з|із| Enterprise| Manager|. При видаленні|віддаленні| тригера|трігера| інформація про нього віддаляється з|із| системних таблиць SysComments| і SysObjects|. Для видалення|віддалення| з|із| бази даних одного або декількох тригерів|трігерів| застосовують оператора DROP| TRIGGER|. Якщо віддаляється таблиця тригера|трігера| або його відображення|вистава|, то всі прив'язані до них тригери|трігери| також віддаляються. Щоб|аби| видалити|віддаляти| тригер|трігер| Alerter| з|із| бази даних BookShopDB|, наберіть наступну|слідуючу| команду:


USE| BookShopDB|

DROP| TRIGGER| [dbo|].[alerter|]


Як і в разі|у разі| оператора CREATE| TRIGGER|, в DROP| TRIGGER| неможливо вказати ім'я бази даних. Але|та|, на відміну від CREATE| TRIGGER|, оператор DROP| TRIGGER| не обов'язково має бути першим оператором пакету. Тому в наведеному вище прикладі|зразку| між операторами USE| і DROP| TRIGGER| відсутнє ключове|джерельне| слово GO|. Можливо, при усуненні неполадок в базі даних, при перевірці внесених змін або під час запуску процедури, що вимагає відключення тригера|трігера|, доведеться|припадатиме| от-|

ключить| один або декілька прив'язаних до таблиці тригерів|трігерів|. Щоб|аби| відключити|відключати| тригер|трігер|, скористайтеся оператором ALTER| TABLE|. Наступна|слідуюча| команда відключає тригер|трігер| Alerter| в таблиці Employees|:


ALTER| TABLE| employees| DISABLE| TRIGGER| alerter|


Щоб|аби| відключити|відключати| всі прив'язані до таблиці тригери|трігери|, слід вказати ключове|джерельне| слово ALL| після|потім| конструкції DISABLE| TRIGGER|. Щоб|аби| включити один або декілька тригерів|трігери|, заміните ключове|джерельне| слово DISABLE| в операторові ALTER| TABLE| на ENABLE|.


Програмування тригерів|трігерів|


Псевдотаблиці Inserted| і Deleted|

При спрацьовуванні тригера|трігера| на події INSERT|, UPDATE| або DELETE| створюється одна або декілька псевдотаблиць (також відомих як логічні таблиці). Можна розглядувати|розглядати| логічні таблиці як журнали|часописи| транзакцій для події. Існує два типи логічних таблиць: Inserted| і Deleted|. Inserted| створюється в результаті|внаслідок| події додавання|добавляти| або оновлення даних. У ній знаходиться|перебуває| набір доданих|добавляти| або змінених записів. UPDATE-триггер| створює також логічну таблицю Deleted|. У ній знаходиться|перебуває| початковий|вихідний| набір записів в тому стані|достатку|, в якому він був до операції оновлення. Наступний|слідуючий| приклад|зразок| створює тригер|трігер|, який виводить вміст Inserted| і Deleted| після|потім| події UPDATE| в таблиці Authors|:


CREATE| TRIGGER| dbo|.updatetables

ON| dbo|.authors

AFTER| UPDATE|

AS|

SELECT| "Description|" = The| Inserted| table|:'

SELECT| * FROM| inserted|

SELECT| "Description|" = 'The| Deleted| table|:'

SELECT| * FROM| deleted|


Після|потім| виконання простого оператора UPDATE|, що змінює|зраджує| ім'я автора з|із| Dean| на Denby|, спрацьовує тригер|трігер|, який виводить наступні|слідуючі| результати:

The| Inserted| table|:

Straight| Denby| Oakland| CA| 94009

The| Deleted| table|:

Straight| Dean| Oakland| CA| 94B09

Після|потім| виконання тригера|трігера| оновлення в таблиці Authors| (таблиці тригера|трігера|) міститься|утримується| оновлений запис. При спрацьовуванні тригера|трігера| можливий відкіт|відкат| модифікацій таблиці Authors|, якщо в тригері|трігері| запрограмовані відповідні дії. Відкіт|відкат| транзакції також передбачений для тригерів|трігерів| INSERT| і DELETE|.

При спрацьовуванні тригера|трігера| на видалення|віддалення| набір видалених|віддалених| записів збожеволіє в логічну таблицю Deleted|. Таблиця Inserted| не бере участь в події DELETE|.

Примітка|тлумачення| В попередньому прикладі|зразку| оператор SELECT| використаний лише для наочності|наглядний|. Ніколи не застосовуйте в тригерах|трігерах| операторів, які повертають результат, якщо ви не упевнені, що цей результат буде оброблений додатком|застосуванням|, що викликав|спричиняв| спрацьовування тригера|трігера|.


Синтаксис тригерів|трігерів|, системні команди і функції

Тепер, коли ви засвоїли призначення тригерів|трігерів| і познайомилися з|із| різними їх типами, ми розповімо|розказуватимемо| про синтаксис операторів для створення|створіння| і зміни тригерів|трігерів|. Функції і системні команди розширюють можливості|спроможності| тригерів|трігерів|, дозволяючи описати в них бізнес-логіку.


Конструкції UPDATE| (имя_столбца|) і (COLUMNS_UPDATED|())

Дні конструкції — UPDATE| (имя_спголбца|) і (COLUMNS_UPDATED|()) — є|з'являються| важливими|поважними| компонентами операторів CREATE| TRIGGER| і ALTER| TRIGGER|. Ці конструкції дозволяється включати в UPDATE-| і INSERT-триггеры|, і вони можуть розташовуватися в будь-якому місці|місце-милі| оператора CREATE| TRIGGER| або ALTER| TRIGGER|. Конструкція IF| UPDATE| (имя_столбца|) визначає, чи сталася в стовпці имя_столбца| подія INSERT| або UPDATE|. Якщо потрібно задати декілька стовпців, слід розділити їх конструкціями UPDATE| (имя_столбца|). Наприклад, наступний|слідуючий| фрагмент коди перевіряє, чи виконано додавання|добавляти| або оновлення в стовпцях First_Name| і Last_Name|, і виконує деякі дії над цими стовпцями в результаті|внаслідок| подій INSERT| або UPDATE|:


IF| UPDATE| (first_name|) OR| UPDATE| (Last_Name|)

BEGIN|

Якщо який-небудь|будь-який| із|із| стовпців оновлюється|обновляє|.

виконати над ним які-небудь дії.

END|


Відкладений дозвіл імен допускає відсутність в таблиці стовпця, заданого параметром имя_столбца|, на момент прив'язки тригера|трігера| до таблиці. Проте|однак| необхідно, щоб|аби| цей стовпець існував під час спрацьовування тригера|трігера|.

Якщо підставити значення замість имя^столбца|, конструкція UPDATE| поверне TRUE|. Конструкція (COLUMNS_UPDATED|()) також перевіряє, чи сталося оновлення стовпців. Замість true| або false| конструкції (COLUMNS_UPDATED|(>) повертає бітову маску типа|типу| varbinary|, що описує стовпці, в яких виконано додавання|добавляти| або оновлення.

Написати конструкцію (COLUMNS_UPDATED|()) складніше, ніж UPDATE| (имя_столбца|), зате|натомість| вона дозволяє точно визначити, в яких з|із| перевірених стовпців додані|добавляти| або оновлені дані. Що підлягають перевірці стовпці задають за допомогою маски, перед ставляющей| номер (порядковий) кожного стовпця в таблиці. У розташованій|схильній| далі таблиці показано перші вісім стовпців і призначені ним маски.

Стовпець 1

Бітова маска 1

2

2

3

4

4

8

5

16

6

32

7

64

8

128

Наступний|такий| код дозволять перевірити, чи були додані|добавляти| або оновлені дані в стол-|

бцах| 4 або 6:

IF| (COIUMNSJJPDATEDO| & 40) > О

Значення 40 — це результат підсумовування маски 8 для стовпця 4 і маски 32 для стол-|

бца| 6. Вираження|вираз| перевіряє, чи дійсне значення (COLUMNS_UPDATED|()) боль-|

ше| 0. Іншими словами, умова виконується, якщо хоч би|хоча би| один з двох або обидва стовпці

оновлені. Якщо задати умову (COLUMNS_UPDATED|() & 40) = 40, то перевірка обнов-|

ления| виконується в обох стовпцях. Якщо оновлення сталося тільки|лише| в одному із стол-|

бцов|, умова не виконається.

Щоб|аби| перевірити дев'ять і більше стовпців, слід використовувати функцію SUBSTRING|

яка дозволяє вказати тригеру|трігеру| маску, що підлягає перевірці. Наприклад, сле-|

дуючий код дозволяє перевірити, чи оновлений дев'ятий стовпець:

IF| ((SUBSTRING|(COLUMNS_UPDATED|(),2,1)=1))

Функція SUBSTRING| примушує|заставляє| конструкцію (COLUMNS_UPDATED|()> перейти до

другому октету стовпців і перевірити, чи оновлений перший стовпець другого октету (його ре-|

альный| порядковий номер дорівнює 9). Для цього стовпця повертається значення типа|типу| varbinary|

рівне 1. У показаній далі таблиць? ілюструється принцип дії функції SUBSTRING|

необхідною для перевірки стовпців з 9 по 16.

IF| ((SUBSTRING|(COLUMNS_UPDATED|(),2,y)=z})

Стовпець

Значення біля|в| і z

9

1

10

2

11

4

12

8

13

16

14

32

15

64

16

128

Щоб|аби| перевірити декілька стовпців на предмет модифікації, слідує|прямує| просто сло-|

жити значення бітової маски для кожного з них. Наприклад, щоб|аби| перевірити стовпці

14 і 16, потрібно задати для z вираження|вираз| 160 (32 + 128).

Функції і системні команди

Для реалізації бізнес-логіки в тригерах|трігерах| призначені різні функції і систем-|

ные| команди. У тригерах|трігерах| часто використовується функція @@ROWCOUNT. Вона повертає

число рядків, на яке вплинуло ис| толнение| попереднього оператора TRANSACT-SQL|. Тріг-

гер| спрацьовує на подію INSERT|, UPDATE| або DELETE|, навіть якщо при цьому не из-|

міняється жоден рядок. Тому для виходу з|із| тригера|трігера| за відсутності модифікацій

таблиці використовується системна команда RETURN|.

В разі|у разі| виникнення помилки інколи|іноді| потрібно вивести повідомлення|сполучення| з|із| описом її

причини. Для виведення повідомлень|сполучень| про помилки використовується системна команда RAISERROR|.

Призначені для користувача повідомлення|сполучення| про помилки створюють за допомогою системної храни-|

мій процедури sp_addmessage| або виводять вбудовані повідомлення|сполучення| при виклику системної

команди RAISERROR|. За додатковою інформацією про системну проце-|, що зберігається

дурці sp_addmessage| звертайтеся|обертайтеся| в SQL| Server| Books| Online|.

У тригерах|трігерах|, написаних на мові|язиці| TRANSACT-SQL|, також інколи|іноді| застосовують системну

команду ROLLBACK| TRANSACTION|. Вона викликає|спричиняє| відкіт|відкат| всього пакету тригера|трігера|. При

фатальній помилці також відбувається|походить| відкіт|відкат|, але|та| в неявному вигляді|виді|. Якщо завданням|задачею| тригера|трігера|

є|з'являється| завершення транзакції в .любом випадку (окрім|крім| тих, коли під час транзакції

виникає фатальна помилка), то в код тригера|трігера| можна не включати системну команду

ROLLBACK| TRANSACTION|.

Запобіжні засоби при використанні мови|язика| TRANSACT-SQL|

У коді тригерів|трігерів| застосовують операторів SELECT| і PRINT|, а також привласнюють значення

змінним. Проте|однак| использованиеэтих| операторів для повернення результуючих набо-|

рів, виведення повідомлень|сполучень| і значень небезпечно. Звичайне|звичне| спрацьовування тригера|трігера| прозрач-|

але|та| для користувача або додатка|застосування|. Але|та| якщо в додатку|застосуванні| не запрограмована об-|

робітка повертаних значень, наприклад результуючого набору оператора SELECT|

то в роботі додатка|застосування| може виникнути збій. Проте|однак| цілком|сповна| допустимо использова-|

ние| оператора SELECT| як постачальника значення для оператора перевірки умови. На-

приклад|зразок|, можна застосувати оператора SELECT| для перевірки існування деякого

значення і повернення цього значення операторові IF| EXISTS| для подальшої|дальшої| обробки. Что-

би привласнювати значення змінним, необхідно включити в текст програми тригера|трігера|

команду SET| NOCOUNT| ON|.

У тригерах|трігерах| недопустимі наступні|слідуючі| оператори TRANSACT-SQL|:

• ALTER|, CREATE|, DROP|, RESTORE| і LOAD| DATABASE|;

• LOAD| і RESTORE| LOG|;

• DISK| RESIZE| і DISK| INIT|;

• RECONFIGURE|.

Поширені завдання|задачі|

вирішувані|рішати| за допомогою тригерів|трігерів|

Тригери|трігери| дозволяють реалізувати будь-які дії над таблицею або представленням вме-|

сто (INSTEAD| OF-триггеры|) або після|потім| (AFTER-триггеры|) виконання операторів INSERT|

UPDATE| або DELETE|. Тригери|трігери| дозволяють вирішувати|рішати| різні завдання|задачі|.

• Розрахунок проміжних результатів і інших обчислюваних|вичисляти| значень. База даних постоян-|

але|та| міняється у міру додавання|добавляти|, видалення|віддалення| і модифікації даних в її таблицях. У

деяких випадках "дані стовпця однієї таблиці можна розраховувати на основі мо-|

дифицируемых| даних іншої таблиці. Тригери|трігери| є ідеальним сред-|

ство| реалізації обчислюваних|вичисляти| стовпців. На мал. 9-3 показаний тригер|трігер|, який исполь-|

зуется| для оновлення роздрібної ціни товару в таблиці Inventory| при зміні сред-|

їй оптової ціни в таблиці Purchasing|.

.;

vcntory|

itern_num|

itern_desc|

qty_in_stock|

retail| | inventory| j

order| id|

item| num|

wholesale_price|

qty_ordered|

total| cost|

Мал. 9-3. Таблиці Inventory| і Purchasing|

Наступний|такий| тригер|трігер| прив'язаний до таблиці Purchasing|. Він розраховує середню оптопую|

ціну для товару на складі, збільшує її на 30% і оновлює|обновляє| значення стовпця retail_price|

у таблиці Inventory|:

CREATE| TRIGGER| Retail_Price_Update|

ON| purchasing|

AFTER| INSERT|, UPDATE|, DELETE| AS|

SET| NOCOUNT| ON|

IF| EXISTS| (SELECT| item_n>jm| FROM| inserted|)

BEGIN|

UPDATE| inventory|

SET| retail_price| =

(SELECT| (SUM|(pur|.total_cost) /SUM(pur|.qty^orGered) -

FROM| purchasing| pur| INNER| JOIN| inserted| ins|

ON| pur|. item_num| = ins|. item_num|)

11-2061

Тригері|трігері|! Глаєа

FROM| inventory| inv|, inserted| ins|

WHERE| inv|. item_num| - ins|. it'3m_num|

END|

ELSE| IF| EXISTS| (SELECT| item_ium| from| deleted|)

BEGIN|

UPDATE| inventory|

SET| retail_price| =

(SELECT| (SUM|(pur|.total_cost) /SUM(pur|.qty_ordered) •

FROM| purchasing| pur| INNER| JOIN| deleted| del|

ON| pur|.item_num - del|.iteT_num)

FROM| inventory| inv|, deleted| del|

WHERE| inv|.item_num=del.item_nurn

END|

ELSE|

BEGIN|

RAISERROR| ('The| retail| price| has| not| been| adjusted| for| the| product.1, 16

D

RETURN|

END|

У тригері|трігері| застосований оператор SET| NOCOUNT| ON|, тому, коли тригер|трігер| срабатыва-|

ет| і оновлює|обновляє| дані в таблиця Inventory|, результати оператора SELECT| не выводят-|

ся|ця|. Далі виконується перевірка існування таблиць Inserted| або Deleted|. Якщо ні в

однієї з цих таблиць немає записів, то з|із| помошью| системної команди RAISERROR|

тригер|трігер| виводить стандартне повідомлення|сполучення| про те, що значення цін не змінилися. У

системну таблицю SysMessages| також можна додати|добавляти| призначене для користувача повідомлення|сполучення|

засобами|коштами| процедури sp_addmessage|, а потім замість тексту створеного повідомлення|сполучення|

вказати його номер.

Створення|створіння| записів аудиту. Для забезпечення безпеки або просто для відстежування

операцій, що виконуються над таблицею (або таблицями), в базі даних можна створити

тригер|трігер|. Він збирає в таблиці дані, додані|добавляти|, модифіковані або уда-|

ленні з|із| іншої таблиці або відображення|вистави|.

Виклик зовнішніх дій. У тригері|трігері| дозволяється задавати дії, що виходять за пре-|

делы| стандартної обробки бази даних. Наприклад, в занятті 2 ми показували при-|

мерів використання в тригері|трігері| розширеної процедури xp_sendmail|, що зберігається, кото-|

раю посилає поштове повідомлення|сполучення| при спрацьовуванні тригера|трігера|.

Реалізація складною зашиті цілісності даних. Деколи|почасти| стандартних мерів по захисту

цілісності даних недостатньо. Наприклад, операцією каскадного видалення|віддалення| можна

видалити|віддаляти| записи з|із| інших таблиць, тоді як просте видалення|віддалення| порушить ссылоч| ную|

цілісність між цими таблицями. Проте|однак| каскадне видалення|віддалення| може опинитися не-|

бажаним. Тоді замість нього для видалення|віддалення| записів із|із| зв'язаних таблиць использу-|

ют INSTEAD| OF-триггер|, а видалені|віддалені| записи розміщують в іншій таблиці для после-|

дуючої перевірки. Якщо для видалення|віддалення| записів застосовується INSTEAD| OF-триггер|, то реалізувати операцію видалення|віддалення| за допомогою каскадної посилальної цілісності не уда|стся|. Щоб|аби| виконати те ж саме завдання|задачу|, необхідно запрограмувати операцію

каскадного видалення|віддалення| в тригері|трігері|.

__



Схожі:

Створення|створіння| тригерів|трігерів| і керування ними (Тут додати що таке тригер і як він використовується) iconТема: Поняття форми й елемента керування. Практична робота №12. Розміщення на формі елементів керування та настроювання їх властивостей. Мета
Навчальна: повторити правила техніки безпеки в комп’ютерному класі; ознайомити студентів з поняттям елемента керування та їх призначенням,...
Створення|створіння| тригерів|трігерів| і керування ними (Тут додати що таке тригер і як він використовується) iconЕкскурсійні маршрути “стежками івана франка” іван франко у львові
Місто Львів по праву називають містом Івана Франка. Адже тут він прожив дві третини свого життя, тут залишив про себе пам'ять, що...
Створення|створіння| тригерів|трігерів| і керування ними (Тут додати що таке тригер і як він використовується) iconПисанки Що таке писанка…
Писанка, яка з прийняттям християнства стала символом Христового Воскресіння,використовується в релігійних обрядах і відіграє в них...
Створення|створіння| тригерів|трігерів| і керування ними (Тут додати що таке тригер і як він використовується) iconЩо таке писанка? Що таке писанка?
Доки пишуться писанки, світ буде існувати. Зло у вигляді диявола щороку посилає своїх слуг на землю, щоб вони перевірили, чи пишуться...
Створення|створіння| тригерів|трігерів| і керування ними (Тут додати що таке тригер і як він використовується) iconТема : Створення запитів. Створення медичних таблиць
Мета: Початкове уявлення що таке запити, для чого вони потрібні, та їх використання для створення медичних таблиць
Створення|створіння| тригерів|трігерів| і керування ними (Тут додати що таке тригер і як він використовується) icon1. Основи керування
...
Створення|створіння| тригерів|трігерів| і керування ними (Тут додати що таке тригер і як він використовується) iconРішення за певними видами діяльності організації. Менеджмент поняття, яке використовується переважно для характеристики процесів управління господарськими організаціями (підприємствами)
Адміністрування – поняття, що поширюється на управління державними установами або для позначення процесів керування діяльністю апарата...
Створення|створіння| тригерів|трігерів| і керування ними (Тут додати що таке тригер і як він використовується) iconПрограма з предмету: «система управління базами даних»
Об’єкти. Основні поняття субд access. Таблиці, запити, форми, звіти. Інші типи об’єктів: сторінки, макроси, модулі. Робота з іншими...
Створення|створіння| тригерів|трігерів| і керування ними (Тут додати що таке тригер і як він використовується) iconІнструкція про порядок приймання іспитів для отримання права керування транспортними засобами та видачі посвідчень водія
Транспортні засоби, керування якими дозволяється за наявності посвідчення водія
Створення|створіння| тригерів|трігерів| і керування ними (Тут додати що таке тригер і як він використовується) iconОрган учнівського самоврядування
Знову приємно було їм побувати тут, зустрітися зі своїми вчителями та однокласниками. Будемо сподіватися, що наступного року нашу...
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©te.zavantag.com 2000-2017
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи