Главная страница

Язык SQL. Триггеры. Триггеры. Для создания триггера используется оператор create trigger, синтаксис которого представлен ниже


Скачать 13.71 Kb.
НазваниеДля создания триггера используется оператор create trigger, синтаксис которого представлен ниже
АнкорЯзык SQL. Триггеры
Дата05.02.2020
Размер13.71 Kb.
Формат файлаdocx
Имя файлаТриггеры.docx
ТипДокументы
#107302

Триггеры

Для создания триггера используется оператор CREATE TRIGGER, синтаксис которого представлен ниже:

CREATE TRIGGER <имя триггера>

[ACTIVE | INACTIVE}

{ ON <событие базы данных>

| FOR {<имя таблицы> | <имя представления>}

{BEFORE | AFTER}

<событие таблицы (представления)>

[OR <событие таблицы (представления)>] ...

| {BEFORE | AFTER}

<событие таблицы (представления)>

[OR <событие таблицы (представления)>] ...

ON {<имя таблицы> | <имя представления>}

}

[POSITION <целое>]

AS <тело триггера>;

<событие таблицы (представления)> ::=

{INSERT | UPDATE | DELETE}

<событие базы данных> ::=

{ CONNECT

| DISCONNECT

| TRANSACTION START

| TRANSACTION COMMIT

| TRANSACTION ROLLBACK

}

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

Структура тела триггера:

[<объявление локальных переменных>]

BEGIN

<оператор>

[<оператор> … ]

END

После описания локальных переменных в теле триггера следует блок операторов, заключенных в операторные скобки BEGIN и END.

Для триггеров существуют специфические контекстные переменные OLD и NEW. Более правильное название этих ключевых слов - префиксы имен столбцов. В триггерах можно обращаться к значению любого столбца таблицы (представления) до его изменения в клиентской программе (для этого перед именем столбца помещается ключевое слово OLD и точка) и после изменения (перед именем столбца помещается NEW и точка).

Контекстная переменная OLD (префикс имени столбца) для всех видов триггеров является переменной только для чтения. Она недоступна в триггерах, вызываемых при добавлении данных, независимо от фазы события.

Контекстная переменная NEW в триггерах для фазы события после (AFTER) также является переменной только для чтения. Она недоступна в триггерах для события удаления данных.

Значение OLD.ИмяСтолбцапозволяет обратиться к состоянию столбца, имевшему место до внесения возможных изменений.

Значение NEW.ИмяСтолбца - позволяет обратиться к состоянию столбца после внесения возможных изменений.

Пример:

CREATE TRIGGER BU_TOVARY FOR TOVARY

ACTIVE

BEFORE UPDATE

AS

BEGIN

IF (OLD.TOVAR<>NEW.TOVAR) THEN

UPDATE PRODAJA

SET TOVAR=NEW.TOVAR

WHERE TOVAR=OLD.TOVAR;

END

В этом примере триггер вносит соответствующие изменения в таблицу PRODAJA, если в записи таблицы TOVARY изменилось значение столбца TOVAR.

Нельзя создавать один триггер для нескольких событий таблицы (представления) или нескольких событий базы данных.

Для изменения заголовка и/или тела существующего триггера используется оператор ALTER TRIGGER.

В операторе изменения триггера можно изменить его состояние активности (ACTIVE / INACTIVE), событие (события) таблицы (представления) и фазу события, позицию триггера и выполняемые триггером действия.

Для удаления существующего триггера используется оператор

DROP TRIGGER <имя триггера>


написать администратору сайта