Триггеры.
Проектирование и разработка базы данных
В одной из них хранятся копии всех вставляемых строк (поэтому данная таблица именуется INSERTED), а во второй хранятся копии всех удаляемых строк (эта таблица именуется DELETED). Независимо от используемого типа триггера для реализации действий, предусмотренных этим триггером в СУБД SQL Server, используются две виртуальные таблицы. INSERTED содержит новые значения модифицированных записей… Читать ещё >
Триггеры. Проектирование и разработка базы данных (реферат, курсовая, диплом, контрольная)
Триггеры, как и хранимые процедуры, являются механизмом организации функционала системы в теле сервера баз данных. В таблице 6.2 приведено сравнение триггеров и хранимых процедур.
Таблица 6.2. Сравнение триггеров и хранимых процедур
Хранимые процедуры. | Триггеры. | |
Являются самостоятельным объектом базы данных. | Привязываются к таблице или виду. | |
Явно вызываются на выполнение командой EXECUTE. | Реагируют на события, связанные с таблицей-владельцем. | |
Могут иметь входные и / или выходные параметры, коды возврата. | Не имеют входных / выходных параметров и кодов возврата. | |
Могут выполняться в отдельной транзакции. | Выполняются в той же транзакции, в которой осуществляются изменения таблицы-владельца. | |
Возможность закрепления триггеров за конкретными операторами определяется тем, что в языке SQL предусмотрены три типа запросов, предназначенных для изменения данных — INSERT, UPDATE и DELETE. В связи с этим выделяют шесть видов триггеров (табл. 6.3).
Таблица 6.3. Виды триггеров
Объект. | Действие. | Триггер | |
Таблица / вид. | Вставка строк INSERT. | Вместо вставки строк INSTEAD OF. | |
После вставки строк FOR (AFTER). | |||
Модификация строк UPDATE. | Вместо модификации строк INSTEAD OF. | ||
После модификации строк FOR (AFTER). | |||
Удаление строк DELETE. | Вместо удаления строк INSTEAD OF. | ||
После удаления строк FOR (AFTER). | |||
Примечание: триггеры FOR и AFTER являются синонимами.
Независимо от используемого типа триггера для реализации действий, предусмотренных этим триггером в СУБД SQL Server, используются две виртуальные таблицы.
В одной из них хранятся копии всех вставляемых строк (поэтому данная таблица именуется INSERTED), а во второй хранятся копии всех удаляемых строк (эта таблица именуется DELETED).
Таблица 6.4. Содержимое таблиц INSERTED и DELETED.
Вид триггера. | Таблицы INSERTED и DELETED. | |
INSTEAD OF INSERT. | INSERTED содержит вставляемые в таблицу записи. DELETED пуста. | |
FOR INSERT. | INSERTED содержит вставленные в таблицу записи. DELETED пуста. | |
INSTEAD OF UPDATE. | INSERTED содержит новые значения модифицируемых записей. DELETED содержит старые значения модифицируемых записей. | |
FOR UPDATE. | INSERTED содержит новые значения модифицированных записей. DELETED содержит старые значения модифицированных записей. | |
INSTEAD OF DELETE. | INSERTED пуста. DELETED содержит удаляемые записи. | |
FOR DELETE. | INSERTED пуста. DELETED содержит удаленные записи. | |
Наиболее характерные области применения триггеров — это обеспечение ссылочной и семантической целостности базы данных, создание журналов, поддержка сложных ограничений и проверок, реакция сервера в ответ на действия пользователя.
Создавать новые триггеры можно либо в редакторе запросов среды Management Studio, либо воспользовавшись специальным шаблоном (рис. 6.10), который открывается при выборе в «Обозревателе объектов» пункта «Создать триггер» у таблицы, к которой будет привязываться создаваемый триггер. сервер база данный интерфейс.
Примеры:
1. Триггер на поддержание актуального количества товаров на складе при добавлении поставок деталей.
2. Триггер на поддержание актуального количества товаров на складе при удалении поставок.
3. Триггер на поддержание актуального количества товаров на складе при отпуске деталей в цеха.