Триггеры DDL

Оценить
(0 голоса)

В первой части этой главы описывались триггеры DML, задающие действия, которые выполняются сервером при модификации данных таблицы в процессе выполнения оператора insert, update или delete. Database Engine позволяет вам определять триггеры и для операторов DDL, таких как create

database, drop table и alter table. СиНТЭКСИС для Триггеров DDL:

create trigger [schema_name.} trigger_name on {all server  |  database }

[with {encryption | execute as clause_name]

{for I after}  (event_group |  event_type | logon } as {batch I external name method_name}

Как видно из предыдущего синтаксиса, триггеры DDL создаются тем же самым образом, что и триггеры DML. Операторы alter trigger и drop trigger также используются для изменения и удаления триггеров DDL. По этой причине в данном разделе описываются только те опции оператора create trigger, которые являются новыми в синтаксисе для триггеров DDL.

Когда вы определяете триггер DDL, вы в первую очередь должны принять решение об области видимости вашего триггера. Предложение database указывает, что областью видимости триггера DDL является текущая база данных. Предложение all server указывает, что областью видимости триггера DDL является текущий сервер.

После задания области видимости триггера вы должны принять решение, будет ли триггер вызываться для одного оператора DDL или для группы операторов. Параметр event_type задает оператор DDL, после выполнения которого вызывается триггер. Параметр even t_group определяет имя предварительно определенной группы событий в языке Transact-SQL. Триггер DDL вызывается после появления любого события языка Transact-SQL, принадлежащего группе event_group. Вы можете найти весь список событий группы в документации Books Online. Ключевое слово logon задает триггер начала сеанса (см. пример 14.8).

Помимо похожестей, которые присутствуют у триггеров DML и DDL, у них существуют и некоторые серьезные отличия. Основным различием между этими двумя формами триггеров является то, что триггер DDL может быть использован для задания его области видимости не только в его базе данных, но и в сервере, не только в отдельном объекте. При этом триггеры DDL не поддерживают триггеры instead of. Как вы, наверное, догадались, таблицы inserted и deleted здесь не нужны, потому что триггеры DDL не меняют содержимого таблиц.

Далее рассматриваются две различные формы триггеров DDL: триггеры уровня базы данных и триггеры уровня сервера.


Триггеры уровня базы данных
Триггеры уровня сервера
Триггеры и CLR
Резюме к тригерам
Общие сведения о тригерах

Добавить комментарий


Защитный код
Обновить

© 2018 www.serversql.ru. Все права защищены.