Опубликован: 11.12.2006 | Доступ: свободный | Студентов: 5820 / 381 | Оценка: 4.42 / 3.86 | Длительность: 57:15:00
Лекция 22:

Создание и использование триггеров

Использование оператора DROP TRIGGER

Для удаления триггера из таблицы используйте оператор DROP TRIGGER. Вы можете удалить триггер, который вам больше не нужен. Этот оператор имеет следующий синтаксис:

DROP TRIGGER имя_триггера
Чтобы удалить триггер Print_Update, используйте следующий оператор:
USE Bicycle_Inventory
GO 
DROP TRIGGER Print_Update 
GO

Теперь при попытке увидеть существующие триггеры по таблице MyTable (с помощью следующих операторов T-SQL) вы увидите, что нет ни одного триггера:

USE MyDB
GO 
sp_helptrigger MyTable 
GO
Примечание. Если вы удаляете таблицу, то при этом автоматически удаляются все триггеры по данной таблице.
Блокирование (disabling) и разблокирование (enabling) триггеров

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

USE MyDB
GO
IF EXISTS   (SELECT     name
                 FROM       sysobjects
                 WHERE     name = "Print_Update" AND
                             type = "TR")
DROP TRIGGER Print_Update
GO

CREATE TRIGGER Print_Update
ON Bicycle_Inventory
FOR UPDATE
AS
PRINT "Bicycle_Inventory table was updated"
GO

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

ALTER TABLE Bicycle_Inventory
DISABLE TRIGGER Print_Update 
GO

Теперь после этого изменения в таблице Bicycle_Inventory триггер Print_Update не будет активизироваться, пока не будет явно задано разблокирование с помощью опции ENABLE TRIGGER, как это показано ниже:

ALTER TABLE Bicycle_Inventory
ENABLE TRIGGER Print_Update
GO

Предложения ENABLE TRIGGER и DISABLE TRIGGER полезно использовать, когда вы хотите прекратить активизацию триггера, но сохранить его на тот случай, если он понадобится в будущем. Определение триггера не изменяется, поэтому вам не придется создавать его снова в будущем; вам нужно будет только разблокировать его.

Управление триггерами с помощью Enterprise Manager

Используя Enterprise Manager, вы можете управлять вашими триггерами с помощью графического интерфейса. Но вам по-прежнему нужно знать, как создаются программы на языке T-SQL.

Удаление триггера

Чтобы удалить триггер с помощью Enterprise Manager, выполните следующие шаги.

  1. Откройте окно Trigger Properties, щелкнув правой кнопкой мыши на имени таблицы, указав в контекстном меню All Tasks и выбрав пункт Manage Triggers из подменю All Tasks.
  2. В окне Trigger Properties выберите имя данного триггера из раскрывающегося списка Name и щелкните на кнопке Delete (Удалить).
  3. Появится диалоговое окно подтверждения (рис. 22.5). Щелкните на кнопке Yes (Да), чтобы удалить выбранный вами триггер.
    Диалоговое окно, в котором вы подтверждаете удаление триггера

    Рис. 22.5. Диалоговое окно, в котором вы подтверждаете удаление триггера
Модифицирование триггера

Чтобы модифицировать триггер с помощью Enterprise Manager, выполните следующие шаги.

  1. Откройте окно Trigger Properties, щелкнув правой кнопкой мыши на имени таблицы, указав в контекстном меню All Tasks и выбрав пункт Manage Triggers из подменю All Tasks.
  2. Выберите имя данного триггера из раскрывающегося списка Name.
  3. Отредактируйте текст T-SQL в окне Text. Для отступов в тексте используйте клавиши Ctrl+Tab. Вы можете использовать оператор CREATE TRIGGER или ALTER TRIGGER. В обоих случаях SQL Server удалит существующий триггер и создаст его заново. Вы можете даже использовать оператор CREATE TRIGGER, указав после него имя существующего триггера. Вы не получите сообщения об ошибке, которое возникло бы при использовании интерактивных OSQL или ISQL. Закончив редактирование, щелкните на кнопке Apply. После SQL Server автоматически модифицирует определение данного триггера.

Заключение

В этой лекции вы ознакомились со специальным типом хранимых процедур, который называется триггером, и узнали о пяти типах триггеров, которые могут быть созданы по определенной таблице: INSERT, UPDATE, DELETE, AFTER и INSTEAD OF. Вы также узнали, как создавать и модифицировать эти триггеры с помощью операторов T-SQL и Enterprise Manager. В "Доступ к Microsoft SQL Server 2000 из Internet" вы узнаете, как осуществлять доступ к SQL Server 2000 из Internet с помощью таких технологий, как ADO и XML.