Опубликован: 02.02.2007 | Доступ: свободный | Студентов: 2376 / 244 | Оценка: 4.10 / 3.86 | Длительность: 26:44:00
Урок 28:

Триггеры

< Урок 27 || Урок 28: 12345 || Урок 29 >

Создание триггеров

SQL Server накладывает ряд ограничений на действия, выполняемые триггерами. Вы не можете создавать (командой CREATE ), изменять (командой ALTER ) или удалять (командой DROP ) базу данных с использованием триггера; вы не можете восстанавливать базу данных или файл журнала; и вы не можете выполнять определенные операции, которые изменяют конфигурацию SQL Server. (Если вас интересует полный перечень "запрещенных" команд, обратитесь к документации SQL Server Books Online.)

Если вы с помощью триггера меняете параметры базы данных, изменение будет действовать только на время выполнения триггера; после этого параметру будет возвращено его оригинальное значение.

Теоретически вы можете использовать оператор RETURN для возврата значения из триггера, но вы не можете полагаться на то, что клиентскому приложению известно о существовании триггера и о том, какие действия он выполняет. Обычно в таких случаях лучше использовать команду RAISERROR, поскольку в большинстве разрабатываемых приложений предусмотрена возможность обработки таких ошибок.

Использование команды CREATE TRIGGER

Как и любые другие объекты базы данных, триггер определяется с помощью соответствующей формы оператора CREATE. Базовый синтаксис оператора создания триггера следующий:

CREATE TRIGGER имя_триггера
ON таблица_или_представление
тип_триггера, список_команд
AS
операторы_SQL

Имя_триггера должно удовлетворять правилам, принятым для идентификаторов. Таблица_или_представление может быть именем представления, только если тип_триггера есть INSTEAD OF, поскольку только этот тип триггера вы можете определять для представлений. Триггеры не могут быть созданы для временных таблиц или системных таблиц, но они могут ссылаться на временные таблицы.

Тип_триггера должен быть выражен одним из ключевых слов AFTER, FOR или INSTEAD OF, в то время как список_команд может быть любой комбинацией команд INSERT, UPDATE или DELETE. Если вы указываете более одной команды, их следует отделять запятыми.

Примечание. Ранние версии SQL Server поддерживали только триггеры AFTER и использовали ключевое слово FOR в качестве типа_триггера. Этот синтаксис по-прежнему поддерживается SQL Server 2000, но это будет означать то же самое, что триггер AFTER.

Операторы_SQL, следующие за ключевым словом AS, определяют действия, выполняемые триггером. Здесь имеется аналогия с хранимыми процедурами, за исключением того, что триггеры не имеют параметров.

Создайте триггер AFTER

  1. Нажмите кнопку New Query (Новый запрос)в панели инструментов анализатора запросов Query Analyzer. Query Analyzer отобразит новое окно Query (Запрос).
  2. Нажмите кнопку Load Script (Загрузить сценарий)в панели инструментов анализатора запросов Query Analyzer. Query Analyzer отобразит диалоговое окно Open Query File (Открытие файла запроса).

  3. Перейдите к папке SQL 2000 Step by Step в корневой директории, выделите сценарий afterUpdate и нажмите кнопку Open (Открыть). Query Analyzer загрузит сценарий в окно Query (Запрос).

  4. Нажмите кнопку Execute Query (Выполнить запрос)в панели инструментов анализатора запросов Query Analyzer. Query Analyzer создаст триггер.
  5. Нажмите кнопку New Query (Новый запрос)в панели инструментов анализатора запросов Query Analyzer. Query Analyzer откроет новое окно Query (Запрос).
  6. Нажмите кнопку Load Script (Загрузить сценарий)в панели инструментов анализатора запросов Query Analyzer. Query Analyzer отобразит диалоговое окно Open Query File (Открытие файла запроса).

  7. Выделите сценарий TestAfterUpdate и нажмите кнопку Open (Открыть). Query Analyzer загрузит сценарий.

  8. Нажмите кнопку Execute Query (Выполнить запрос)в панели инструментов анализатора запросов Query Analyzer. Query Analyzer выполнит сценарий и отобразит результат.

< Урок 27 || Урок 28: 12345 || Урок 29 >
Инна Грушецкая
Инна Грушецкая
Сергей Чесноков
Сергей Чесноков