Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
86
Добавлен:
10.05.2014
Размер:
1.17 Mб
Скачать

Триггеры как инструмент ограничения целостности в 7.2 Transact SQL

Общий вид создания триггера

CREATE TRIGGER имя_триггера

ON имя_целевого_объекта время_активации_триггера контролируемая операция тело_триггера

имя_триггера – определяет имя триггера имя_целевого_объекта – задает целевую таблицу

время_активации_триггера – определяет этап срабатывания триггера: INSTEAD OF, AFTER

контролируемая операция – определяет на какое SQL-событие срабатывает триггер

Тело триггера указывает действие, которое должно быть выполнено при активации триггера

Триггеры как инструмент ограничения целостности в 7.3 Transact SQL

INSTEAD OF:

Изменения к таблице еще не применены. Данные могут нарушать текущие ограничения.

Изменения необходимо применить к таблице вручную

В случае ошибки достаточно завершить работу триггера.

Триггеры как инструмент ограничения целостности в 7.4 Transact SQL

AFTER:

Изменения к таблице уже применены. Данные соответствуют всем текущим ограничениям.

В случае ошибки необходимо явно откатить изменения. ROLLBACK.

Триггеры как инструмент ограничения целостности в 7.5 Transact SQL

Пример 1. Запретить добавлять запись о сотруднике зарплата которого, менее 10000 рублей

CREATE TRIGGER Tr1 ON emp

AFTER INSERT AS

BEGIN

if (select salary from inserted)<10000 rollback

print‘ Запрещено добавлять запись о сотруднике с окладом менее 10 000 рублей' END

Курсор, как средство процедурного доступа к табличным данным 7.6 в Transact SQL

Протокол работы

Объявление курсора

DECLARE <имя курсора> CURSOR FOR <запрос>

Открытие курсора (первоначальная загрузка данных)

OPEN <имя курсора>

Извлечение одной строки из курсора

FETCH [NEXT | LAST | ...] FROM <имя курсора> INTO <имя переменной>, <имя переменной>, ....

Проверка наличия результата операции FETCH (Значение 0 говорит об успешности завершения операции)

IF @@FETCH_STATUS = 0

Освобождение курсора

CLOSE <имя курсора>; DEALLOCATE <имя курсора>;

Соседние файлы в папке docs