4. Какие операторы управления включает Transact SQL?
5. Каким образом осуществляется присваивание значений в Transact SQL?
6. Как осуществляется вызов хранимой процедуры?
7. Какими ключевыми словами задается режим компиляции и режим сохранения исходного текста при создании хранимой процедуры?
8. Какими способами могут быть переданы параметры в хранимую процедуру?
9. Какая функция Transact SQL возвращает количество незавершенных транзакций?
10. Каким образом задаются параметры вывода при создании и вызове хранимых процедур?
Триггер – это инструмент SQL-сервера, используемый для поддержания целостности данных в базе. Триггеры представляют собой специальный класс хранимых процедур, автоматически запускаемых при добавлении, изменении и удалении данных из таблицы. Каждый триггер привязывается к конкретной таблице. Когда пользователь пытается изменить данные в таблице, сервер автоматически запускает триггер, и только при его успешном завершении разрешается выполнение изменений. Триггеры применяются для обеспечения целостности данных и выполнения бизнес-правил, слишком сложных для реализации ограничений.
В отличие от хранимых процедур, триггеры нельзя вызывать напрямую, в них нельзя передавать параметры. Главное их преимущество в том, что они могут содержать сложную логику обработки. С помощью триггеров осуществляются каскадные изменения данных, что позволяет сократить объем кода для обновления данных в связанных таблицах и обеспечить синхронность изменений во всех таблицах.
Триггеры могут использоваться для выдачи пользовательских сообщений об ошибках при возникновении определенных условий в процессе выполнения этого триггера. Ограничения, правила и значения по умолчанию позволяют выводить лишь системные сообщения об ошибках.
Триггеры не возвращают наборы результатов. Это связано с тем, что операторы INSERT, UPDATE и DELETE не должны возвращать наборы результатов. Как и хранимые процедуры, триггеры содержат операторы языка Transact-SQL.
В зависимости от выполняемых пользователем действий, приводящих к запуску триггера, они делятся на три категории:
· триггеры изменения (запускаются при попытке изменения данных с помощью команды UPDATE);
· триггеры вставки (запускаются при попытке вставки данных с помощью команды INSERT);
· триггеры удаления (запускаются при попытке удаления данных с помощью команды DELETE).
При работе с триггерами доступны две специальные таблицы: таблиц вставок (INSERTED) и таблица удалений (DELETED) со структурой идентичной структуре таблицы, с которой связан триггер.
При выполнении операции DELETE строки, удаленные из модифицируемой таблицы помещаются в таблицу DELETED. При выполнении операции INSERT строки, добавленные в модифицируемую таблицу, помещаются в таблицу INSERTED. При выполнении операции UPDATE исходное значение строки для каждой измененной строки ее исходное значение помещается в таблицу DELETED, а новое значение – в таблицу INSERTED. Данные таблиц INSERTED и DELETED можно использовать в триггере.