русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Типы триггеров


Дата добавления: 2013-12-24; просмотров: 1065; Нарушение авторских прав


AS

AS

SQL_onepaтор [...n]

}

|

{

{FOR | AFTER | INSTEAD OF }

{ [INSERT] [,] [UPDATE] }

[ WITH APPEND]

[ NOT FOR REPLICATION]

{ IF UPDATE(имя_столбца)

[ { AND | OR} UPDATE (имя_столбца)] [...n]

|

IF ( COLUMNS_UPDATES() {оператор_бит_обработки}

бит_маска_изменения)

{оператор_бит_сравнения }бит_маска [...n] }

 

SQL_onepaтop [...n]

}

}

 

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

 

Рассмотрим назначение аргументов.

Имя триггера должно быть уникальным в пределах базы данных. До­полнительно можно указать имя владельца.

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

В SQL Server существует два параметра, определяющих поведение триггеров:

1. AFTER. Триггер выполняется после успешного выполнения вызвав­ших его команд. Если команды по какой-либо причине не могут быть успешно завершены, триггер выполняться не будет. Следует отметить, что изменения данных в результате выполнения запроса пользовате­ля и выполнение триггера осуществляется в теле одной транзакции: если произойдет откат триггера, то будут отклонены и пользователь­ские изменения.

 

Для таблицы можно определить несколько AFTER-триггеров для каждой операции (INSERT, UPDATE, DELETE).

Если для таблицы предусмотрено выполнение нескольких AFTER-триггеров, то с по­мощью системной хранимой процедуры SP_SETTRIGGERORDER можно указать, какой из них будет выполняться первым, а какой по­следним.



По умолчанию в SQL Server все триггеры являютсяAFTER-триггерами.

 

2. INSTEAD OF. Триггер вызывается вместо выполнения команд.

В от­личие от AFTER-триггера INSTEAD OF-триггер может быть опреде­лен как для таблицы, так и для просмотра. Для каждой операции INSERT, UPDATE, DELETE можно определить только один INSTEAD OF- триггер.

 

Триггеры различают по типу команд, на которые они реагируют. Соответственно существует три типа триггеров:

INSERT TRIGGER. Запускаются при попытке вставки данных с по­мощью команды INSERT.

UPDATE TRIGGER - запускаются при попытке изменения данных с помощью команды update.

DELETE TRIGGER - запускаются при попытке удаления данных с помощью команды DELETE.

 

В определении триггера конструкции

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

{ FOR | AFTER | INSTEAD OF } { [INSERT] [,] [UPDATE]} определяют, на какую команду будет реагировать триггер.

При его создании должна быть указана хотя бы одна команда.

Допускается создание триггера, реаги­рующего на две или на все три команды.

Аргумент WITH APPEND используется для сочетания средств старых и новых версий SQL Server и позволяет создавать несколько триггеров одного и того же типа.

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

Конструкция AS SQL_оператор [. . . n] определяет набор SQL-операторов и команд, которые будут выполнены при запуске триггера.

Отметим, что внутри триггера не допускается выполнение ряда опе­раций, таких, например, как:

• создание, изменение и удаление базы данных;

• восстановление резервной копии базы данных или журнала тран­закций.

Выполнение этих команд не разрешено, так как они не могут быть отменены в случае отката транзакции, в которой выполняется триггер. Это запрещение вряд ли может каким-то образом сказаться на функцио­нальности создаваемых триггеров. Трудно найти такую ситуацию, когда, например, после изменения строки таблицы потребуется выполнить вос­становление резервной копии журнала транзакций. t

 



<== предыдущая лекция | следующая лекция ==>
Часть 2. Реализация триггеров в среде MS SQL Server | Часть 3. Программирование триггера


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.315 сек.