Программирование >>  Реализация баз данных 

1 ... 94 95 96 [ 97 ] 98 99 100 ... 162


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

Trigger Properties

Нате- i?Salertet (dbo)

tkUtB TRIGSER dbo-atestei ON dbo employees

£iFr£R UPDATE

0 ck Syntax \ Ririete

:, 5i,&7

Cbse

Apt*

Рис. 9-2. Вид синтаксиса оператора ER на вкладке General в диалоговом окне Trigger Properties

Просмотр, удаление и отключение триггеров

При создании триггера его имя и другие идентификационные данные записываются в системную bjecls текущей базы данных. Текст триггера записывается в системную таблицу ments. Следующий оператор SELECT покажет все триггеры, ири-меняемые к таблицам базы данных

selecL db,.SysObjects where type - tr Триггеры всегда помечены в столбце type значением tr.

Для вывода свойств триггера используется системная хранимая процедура sp JieJp-trigger. Например, чтобы вывести свойства всех триггеров, определенных для таблицы Employees, наберите следующую команду: SP helptrtgger iptabnaffle - employees

Чтобы увидеть содержимое триггера, необходимо сделать запрос к столбцу Text системной таблицы SysComments. Системная хранимая выводит информацию в более организованном виде. Например, для вывода текста триггера alerter наберите следующую команду:

sp helptext @ob]riamfc = alerter

Для просмотра текста триггера также используют опцию Manage Triggers из Enterprise Manager.

При удалении триггера информация о нем удаляется из системных таблиц SysComments и SysObjects. Для удаления из базы данных одного или нескольких триггеров применяют оператор DROP TRIGGER. Если удаляется таблица триггера или его представление, то все привязанные к ним триггеры также удаляются. Чтобы удалить триггер Alerter из базы BookShopDB, наберите следующую команду:

USE BookShopDB

DROP TRIGGER [dbo]. [alerter]



Как и в случае оператора AT i TRIGGER, в DRO .GEU невозможно указать

имя базы данных. Но, в отличие от CREATE TRIGGER, оператор DROP TRIGGER не

обязательно должен быть первым пакета. Поэтому в приведенном выше при-

мере между операторами USE и DROP TRIGGER отсутствует ключевое слово GO.

Возможно, при устранении неполадок в базе данных, при проверке внесенных изменений или во время запуска процедуры, требующей отключения триггера, придется отключить один или несколько привязанных иие триггеров. Чтобы отключить триггер, воспользуйтесь оператором ALTER TABLE. Следующая команда отключает триггер Alerter в таблице Employees:

ALTER TABLE employees DISABLE таGGER alerter

Чтобы отключить все привязанные к триггеры, следует указать ключевое

цо ALL после конструкции DISABLE TRIGGER. Чтобы включить один или несколько

триггеров, замените ключевое слово DISABLE в операторе ALTER TABLE на ENABLE. Упражнение 2. Создание триггеров и управление ими

В этом упражнении вы создадите и проверите триггер, который выводит сообще-УЦ, ние о своем срабатывании. Далее вы попробуете управлять триггерами: переименуете созданный триггер, измените и просмотрите его содержимое, отключите триггер и удалите его из данных. Код, расположенный после конструкции AS, преднамеренно упрощен, поскольку подробнее об этом рассказано в занятии 3.

Для учебных целей выводить сообщение при срабатывании триг-

гера. Однако в рабочих база №ны> следуем щавать триггеры, которые не выводят на экран результирующие наборы и

► Создание прост1х триггеров для таблицы Authors из базы данных BookShopDB

1. Откройте Query Analyzer и подключитесь к локальному серверу.

2. На панели Editor в окне введите и исполните следующий код:

USE BookShopDB

CREATE TRIGGER dbo.Insertindicator

ON dbo.authors .

AFTER INSERT

PRINT ThP insert trigger flpl,

Оператор CREATE TRIGGER создает триггер Insertindicator и привязывает его к таблице Authors в базе данных Book->hopDB- Этот триггер срабатывает при добавлении данных в таблицу Authors и выволит на панели Grids вкладки Results сообщение.

3. На панели Editor в окне Query введите и исполните следующий код:

CREATE TRIGGER dbO. updateindic;!tor

ON ho.authors ,

AFTER UPDATE

PRINT The update trigger fired. GO

CREATE TRIGGER dbO,deleteindicator



ONdbn.auhnrg

AFTER DELETE AS

IF mmwcouMT <> о

PRINT The delete trigger fired.

Оператор CREATE TRIGGER создает триггеры Update Indicator ndicator и привязывает их к таблице Authors в базе даппых BookShopDB. Если происходит событие UPDATE или DELETE, эти триггеры выводят на вкладке Grids панели Results сообщение. Обратите внимание, что триггер проверяет значение ции @@ROWCOUNT. Если удалена одна или несколько строк, выводится сообщепие.

► Проверка еров таблице! Aiif ho i

1. На панели Editor в окне Query введите и исполните следующий код:

INSERT INTO authors (firstnaf?je, lastname. уеагйогп, yeardied) VALUES (Мал , Lio..- 1962, N/A)

В таблицу Authors добавляется запись, триггер dicalor срабатывает и выводит

сообщение на вкладке Messages панели Results

2. На панели Editor в окне Query введите и исполните следующий код: UPDATE authors

SET authors.firstname - Tucker WHERE .(Uthors, firstname - Max

В таблице Authors обновляется запись, триггер срабатывает и выводит

сообщение на вкладке Messages панели Results.

3. На панели Editor в окне Query введите и исполните следующий код:

DELETE authors where firstname = Tucker

Из таблицы Authors удаляется запись, триггер Deletelndicator срабатывает и выводит сообщение на вкладке Messages панели Results.

Переименование икация и просмотр триггера

На панели Editor в окне Query введите и исполните следующую команду для запуска

хранимой процедуры:

sp reriame @ot)jnaiTie=irisertindicator, @newnanie=insupdcontrol

Системная хранимая процедура переименовывает триггер Insertlndicator в

InsUpdControl. Позже вы модифицируете этот триггер так, чтобы он срабатывал на события JNSERT и UPDATE.

2. Исполните запрос.

На Messages панели Results выводится предупреждение о том, что переимено-

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

Введите на панели Editor в окне Query и исполните следующую команду для запуска

хранимой процедуры: sp helptrigger tabnane - authors

Системная хранимая процедура sphelptrigger выводит список триггеров, применяемых к таблице Authors.



1 ... 94 95 96 [ 97 ] 98 99 100 ... 162

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика