
- •НИЯУ "МИФИ"
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Основы проектирования запросов SQL
- •Процедурные элементы Transact SQL
- •Триггеры как инструмент ограничения целостности в 7.2 Transact SQL
- •Триггеры как инструмент ограничения целостности в 7.2 Transact SQL
- •Триггеры как инструмент ограничения целостности в 7.3 Transact SQL
- •Триггеры как инструмент ограничения целостности в 7.4 Transact SQL
- •Триггеры как инструмент ограничения целостности в 7.5 Transact SQL
- •Курсор, как средство процедурного доступа к табличным данным 7.6 в Transact SQL

Триггеры как инструмент ограничения целостности в 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 <имя курсора>;