Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД лаб. раб 2009.doc
Скачиваний:
23
Добавлен:
01.03.2025
Размер:
295.42 Кб
Скачать

Лабораторная работа № 3. Создание триггеров и управление ими

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

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

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

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

USE BookShopDB

GO

CREATE TRIGGER dbo.insertindicator

ON dbo.authors

AFTER INSERT

AS

PRINT ‘The insert trigger fired.’

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

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

CREATE TRIGGER dbo.updateindicator

ON dbo.authors

AFTER UPDATE

AS

PRINT ‘The updatet trigger fired.’

GO

CREATE TRIGGER dbo.deleteindicator

ON dbo.authors

AFTER DELETE

AS

IF ©aROWCOUNToO

PRINT ‘The insert trigger fired.’

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

Проверка триггеров таблицы Authors

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

INSERT INTO authors (firstname, lastname, yearborn, yeardied)

VALUES (‘Max’, ‘Doe’, 1962, ‘N/A’)

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

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

UPDATE authors

SET authors, firstname= ’Tucker’

WHERE authors.firstname= ‘Max’

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

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

На панели Editor в окне Query введите и исполните следующую команду для запуска хранимой процедуры:

sp_rename@objname=insertindicator, @newname=insupdcontrol

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

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

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

3. Введите на панели Editor в окне Query введите и исполните следующую команду для запуска хранимой процедуры:

sp_helptrigger (atabname=authors)

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