Создание триггеров и управление ими icon

Создание триггеров и управление ими




Скачати 138.12 Kb.
НазваСоздание триггеров и управление ими
Дата конвертації31.03.2013
Розмір138.12 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 ) для студентів спеціальності
Создание триггеров и управление ими
Цілісність даних
Методичні рекомендації для виконання лабораторних робіт для студентів спеціальності

Создание триггеров и управление ими

В этом занятии вы познакомитесь с рядом методов создания триггеров и управления ими. Как правило, для создания триггеров и управления ими используется Query Analyzer или Enterprise Manager. Для создания триггера служит оператор CREATE TRIGGER. В процессе создания триггер привязывается к таблице или представлению. Созданный триггер можно модифицировать средствами оператора ALTER TRIGGER. Переименование и просмотр триггеров осущесгвляется посредством системных хранимых процедур или Enterprise Manager.

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


Создание триггеров с помощью языка Transact-SQL

Оператор CREATE TRIGGER позволяет создавать триггеры с помощью Query Analyzer или утилиты командной строки, например osql. При использовании оператора CREATE TRIGGER необходимо задать имя триггера, таблицу или представление, к которому будет привязан триггер, класс (INSTEAD OF или AFTER), событие или события, вызывающие срабатывание триггера, и задачу, которую он должен выполнять. Также можно (но не обязательно) задать необходимость репликации или шифрования триггера. Хотя конструкция WITH APPEND оставлена для преемственной совместимости, ее не следует использовать для создания триггеров в базах данных SQL Server 2000.

Вот основные конструкции оператора CREATE TRIGGER:


CREATE TRIGGER иш__триггера

ON имя_таблицы или имя_представления

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

AS операторы Transact-SQL


В этом разделе подробно обсуждаются конструкции CREATE TRIGGER, ON и FOR/AFTER/INSTEAD OF и показаны примеры их использования. В занятии 3 описаны операторы 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, который посылает по электронной почте сообщение пользователю ВаггуТ, если в таблице employees происходят события INSERT, UPDATE или DELETE:


USE BookShopDB

GO

CREATE TRIGGER dbo.alerter

ON dbo.employees

AETER INSERT. UPDATE, DELETE

AS

EXEC master..xp_sendmail 'ВаггуТ'.

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

GO

Пример мы упростили, чтобы более ясно продемонстрировать создание задачи в триггере. Есть несколько способов сделать результаты задачи более полезными. Например, запрограммировать задачу так, чтобы в почтовом сообщении отображались подробные сведения о внесенных изменениях. Примеры более сложных триггеров показаны и разобраны в занятии 3.


Создание триггеров с помощью Enterprise Manager

Для создания триггеров используют интерфейс SQL-DMO или такие приложения, как Enterprise Manager. Чтобы создать триггер в Enterprise Manager, прежде всего необходимо выбрать базу данных. Далее, щелкнув правой кнопкой таблицу, к которой следует привязать триггер, выберите АН Tasks и щелкните Manage Triggers. В текстовом поле диалогового окна Trigger Properties введиге текст триггера.


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

Триггеры — это мощные объекты базы данных, которые автоматически исполняются при модификации таблицы или представления. Для управления триггерами предназначен ряд команд и инструментов баз данных. Триггеры разрешается:

  • модифицировать с помощью оператора ALTER TRIGGER;

  • переименовать средствами системной хранимой процедуры sp_rename;

  • просмотреть путем запроса системных таблиц или с использованием системных хранимых процедур sp_helptrigger или sp_helptext;

  • удалить с помощью оператора DROP TRIGGER;

  • включить или выключить при помощи конструкций DISABLE TRIGGER и ENABLE TRIGGER оператора ALTER TABLE,

Для модификации, просмотра и удаления триггеров также применяют опцию Manage Triggers из Enterprise Manager. Далее на этом занятии подробно рассмотрено выполнение этих задач по управлению триггерами.


Изменение и переименование триггеров

Для модификации текста триггер можно удалить и воссоздать с новым текстом. Другой способ, без удаления, заключается к использовании оператора 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, а также обратите внимание на изменения в тексте сообщения.

В Enterprise Manager для модификации триггеров служит опция Manage Triggers, с которой вы познакомились в предыдущем разделе этого занятия. В диалоговом окне Trigger Properties выберите триггер, который хотите модифицировать. Далее измените слово CREATE на ALTER.


Иногда новые соглашения об именовании требуют переименовать триггер, это также бывает необходимо при реализации в таблице нескольких триггеров. Для переименования триггера применяют системную хранимую процедуру 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.

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


sp_heiptrigger @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]


Как и в случае оператора CREATiE 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Практическая работа №7 Тема Создание видеоклипа Цель научиться использовать разные виды программного обеспечения для создания потоковой презентации Ход работы Постановка задачи
Работа с текстовым процессором Word ( создание графических изображений средствами текстового процессора, изменение свойств графических...
Создание триггеров и управление ими iconВсеукраинская образовательная сеть
Модуль отвечает за создание и управление отчетами, которые формируются на основе ранее введенных в систему данных. Отчеты представляют...
Создание триггеров и управление ими iconСовременная история войн свидетельствует
Для чего только не служат животным уши! Конечно, все ими слышат. Ими отгоняют мух, подают сигналы соплеменникам, излучают избыточное...
Создание триггеров и управление ими iconБесплатно опубликовать статью в ежегодном сборнике научных статей «Управление персоналом в инновационной среде»
«Управление персоналом в инновационной среде», который издается кафедрой «Управление персоналом и социология» Уральского государственного...
Создание триггеров и управление ими iconДокументи
1. /Управление суднов Вар (4)/razmetka 2.doc
2. /Управление...

Создание триггеров и управление ими iconВопросы к интеллектуальной игре «Что? Где? Когда?». Вопрос №1
Вопрос №1: Для чего только не служат животным уши! Конечно, все ими слышат. Ими отгоняют мух, подают сигналы соплеменникам, излучают...
Создание триггеров и управление ими iconПрактикум по информатике 11 класс Средняя общеобразовательная школа №24 практикум по теме
Обратите внимание на появившийся диалог "Создание презентации" справа (Рис. 1). В этом диалоге в разделе "Создание" выберите пункт...
Создание триггеров и управление ими iconМетодические инструменты комплексной оценки экономической эффективности корпоративного управления на промышленных предприятиях российской федерации
Специальность 08. 00. 05. – Экономика и управление народным хозяйством (экономика, организация и управление предприятиями, отраслями...
Создание триггеров и управление ими iconЛекция 12. По теме: Системный и функциональный подход к управлению банкротством
Управление в широком смысле слова это синтез средств и спо­собов подготовки управленческих решений и организация их испол­нения....
Создание триггеров и управление ими iconСоздание карты гармонизации антропогенного загрязнения
Создание карты гармонизации антропогенного загрязненияг. Одессы на фоне напряжённости
Додайте кнопку на своєму сайті:
Документи


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