Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. II. Речевая деятельность человека. Создание текста. Коммуникативные качества хорошей речи и способы их достижения
  2. А) создание Лиги Наций
  3. А. Создание Правил эксплуатации и назначение ответственных за их соблюдение
  4. Ассемблер. Регистры микропроцессоров 8086-80186. Сегментация памяти в DOS. Создание циклов.
  5. Бриф на создание сайта интернет-магазина
  6. Внешние подпрограммы и модули. Создание и использование модулей.
  7. ВНИМАНИЕ! Далее все действия, связанные с чтением текста задания, а также с созданием, открытием, сохранением и закрытием файлов, выполняются в разных окнах Word.
  8. Возникновение (создание) юридического лица
  9. Выбрасывание исключений. Создание объектов Exception
  10. Г.г. (создание бригад и учебных заведений)

Первый способ:

CREATE TRIGGER trigger_name

[ON { table | view }

[ WITH ENCRYPTION ]

{{ FOR | AFTER | INSTEAD OF }

{ [DELETE] [,] [INSERT] [,] [UPDATE] }

[ WITH APPEND ]

[ NOT FOR REPLICATION ]

AS

sq1_statement [...n]

}

Второй способ:

CREATE TRIGGER trigger name

ON { table | view } [ WITH ENCRYPTION ]

{ (FOR | AFTER | INSTEAD OF) { [INSERT] [,] [UPDATE] }

[ WITH APPEND ]

[ NOT FOR REPLICATION ]

AS

{ IF UPDATE (column) [ { AND | OR } UPDATE (column) ]

[...n]

| IF (COLUMNS_UPDATED() {bitwise_operator} updated_bitmask) {comparison_operator) column__bitmask [...n]

}

sql_statement [...n]

}

trigger_name. Имя триггера, под которым он будет опознаваться хранимыми процедурами и командами Transact-SQL. Имя триггера должно быть уникальным в пределах базы данных. Дополнительно к имени триггера можно указать имя владельца.

table. Имя таблицы базы данных, с которой будет связан триггер. О view. Имя представления базы данных, с которым будет связан триггер.

WITH ENCRYPTION. При указании этого параметра сервер выполняет шифрование кода триггера, так что никто, включая администратора, не сможет получить к нему доступ и прочитать его. Шифрование часто используется для скрытия авторских алгоритмов обработки данных, являющихся интеллектуальной собственностью программиста или коммерческой тайной.

AFTER. При указании этого параметра триггер будет запускаться только после того, когда все команды, вызвавшие триггер, будут успешно выполнены. Этот параметр используется по умолчанию (то есть когда указывается ключевое слово FOR).

INSTEAD OF. При задании этого параметра триггер будет выполняться вместо соответствующих запросов пользователей, приведших вызову триггера. Собственно пользовательские запросы выполняться не будут.

[DELETE] [,] [INSERT] [,] [UPDATE]. Эта конструкция определяет, на какие команды (вставки, удаления или изменения) будет реагировать триггер. При создании триггера должно быть указано хотя бы одно из этих ключевых слов Допускается создание триггера, реагирующего на две или три команды.

WITH APPEND. Использование этого параметра требуется только в том случае, если для базы данных установлен уровень совместимости 6.5 или ниже. Так как до версии SQL Server 7.0 для таблицы было разрешено создание не более одного триггера каждого типа, то по умолчанию создание нового триггера будет приводить к удалению ранее созданного триггера. Параметр WITH APPEND позволяет создавать несколько триггеров каждого типа для базы данных с уровнем совместимости 6.5 или ниже. Для баз данных с уровнем совместимости 7.0 и выше использование этого параметра не обязательно, так как в SQL Server 7,0 и тем более в SQL Server 2000 реализована автоматическая поддержка для одной таблицы до 16 триггеров каждого типа.

NOT FOR REPLICATION. При создании триггера с этим параметром запрещается его запуск при модификации таблиц механизмами репликации. Этот параметр часто используется при создании системных триггеров поддержки подсистемы репликации.

AS sq1_statement [...n]. После ключевого слова AS следует набор команд, которые будут выполнены при запуске триггера (тело триггера).

FOR [INSERT] [,] [UPDATE]. Определяет команду, при выполнении которой будет запускаться триггер. Возможно связывание триггера с несколькими командами.

IF UPDATE (column). С помощью этой команды можно проверить, изменялось ли значение в определенном столбце. В случае положительного ответа будет выполнен определенный набор команд. Отметим, что эта команда может быть использована только для команд INSERT или UPDATE, но не для команды DELETE. Имя таблицы (или представления) при определении имени столбца не требуется.

{AND | OR} UPDATE (column). Эта конструкция применяется совместно с предыдущим параметром в случае, если необходимо проверить изменение более чем одного столбца. Аргумент column задает имя столбца, для которого необходимо отследить факт изменения данных. Ключевое слово AND предписывает запускать триггер только в том случае, если были модифицированы оба столбца (указанные в этой и предыдущей конструкциях). При использовании Создание триггера

ключевого слова OR триггер будет выполнен при выполнении изменений в любом из столбцов.

[...n]. Этот параметр указывает, что допускается использование более чем одной конструкции { AND | OR} UPDATE (column).

IF (COLUMNS_UPDATED()). С помощью этой конструкции можно узнать, какие столбцы таблицы были изменены (UPDATE) или добавлены (INSERT), что допускается только для команд INSERT и UPDATE. Функция COLUMNS_UPDATED() может быть использована в любом месте внутри триггера и возвращает двоичное число, каждый бит которого соответствует конкретному столбцу таблицы. Если тот или иной бит установлен в 1, то соответствующий столбец был изменен. Младший бит соответствует первому столбцу таблицы, второй бит справа — второму столбцу и т. д.

bitwise_operator. Этот параметр задает оператор побитовой обработки, с помощью которого можно определить, изменялся конкретный столбец или нет. Например, можно использовать оператор & (битовый AND) для определения того, был ли изменен конкретный столбец. Оператор побитовой обработки выполняется для операндов COLUMNS_UPDATED() и updated_bitmask.

updated_bitmask. Этот аргумент определяет битовую маску для проверки факта изменения в одном или нескольких столбцах. Каждый столбец представлен отдельным битом. Младший бит соответствует первому столбцу таблицы, второй бит — второму столбцу и т. д. Например, если в таблице имеется 7 столбцов, то значение updated_bitmask для проверки факта изменения столбцов 2, 3 и 6 должно быть равно 38 (двоичное значение 0100110). Для проверки факта изменения столбцов 4, 5, 6 и 7 значение updated_bitmask будет равно 120 (двоичное значение 1111000).

comparison_operator. Оператор сравнения, используемый для проверки значения, возвращенного в результате выполнения побитовой операции сравнения, на соответствие установленным критериям. Чаще всего это оператор, хотя допускается использование любых операторов сравнения (<, >,!-).

co1umn_bitmask. Битовая маска для проверки, были ли действительно изменены проверяемые столбцы.

Пример триггера auth_trl для таблицы authors, который будет запрещать вставку новых строк в таблицу, выдавая при этом сообщение 'Вставка строк запрещена':

CREATE TRIGGER auth_trl

ON authors

FOR INSERT AS

PRINT 'Вставка строк запрещена'

ROLLBACK TRAN




Дата добавления: 2014-12-19; просмотров: 26 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав