ВУЗ:
Составители:
Рубрика:
137
17.4. Программирование триггеров
При выполнении команд добавления, изменения и удаления
записей сервер создает две специальные таблицы: inserted и deleted.
В них содержатся списки строк, которые будут вставлены или уда-
лены по завершении транзакции. Структура таблиц inserted и
deleted идентична структуре таблиц, для которой определяется
триггер. Для каждого триггера создается свой комплект таблиц
inserted и deleted, поэтому никакой другой триггер не сможет полу-
чить к ним доступ.
В зависимости от типа операции, вызвавшей выполнение триг-
гера, содержимое таблиц inserted и deleted может быть разным:
команда INSERT – в таблице inserted содержатся все стро-
ки, которые пользователь пытается вставить в таблицу. В таблице
deleted не будет ни одной строки. После завершения триггера все
строки из таблицы inserted переместятся в исходную таблицу;
команда DELETE – в таблице deleted будут содержаться все
строки, которые пользователь попытается удалить. Триггер может
проверить каждую строку и определить, разрешено ли ее удаление.
В таблице inserted не окажется ни одной строки;
команда UPDATE – при ее выполнении в таблице deleted
находятся старые значения строк, которые будут удалены при ус-
пешном завершении триггера. Новые значения строк содержатся в
таблице inserted. Эти строки добавятся в исходную таблицу после
успешного выполнения триггера.
Для получения информации о количестве строк, которое будет
изменено при успешном завершении триггера, можно использовать
функцию @@ROWCOUNT; она возвращает количество строк, обра-
ботанных последней командой. Следует помнить, что триггер за-
пускается не при попытке изменить конкретную строку, а в момент
выполнения команды изменения. Одна такая команда воздействует
на множество строк, поэтому триггер должен обрабатывать все эти
строки.
Если триггер обнаружил, что из 100 вставляемых, изменяемых
или удаляемых строк только одна не удовлетворяет тем или иным
условиям, то никакая строка не будет вставлена, изменена или уда-
лена. Такое поведение обусловлено требованиями транзакции –
должны быть выполнены либо все модификации, либо ни одной.
17.4. Программирование триггеров При выполнении команд добавления, изменения и удаления записей сервер создает две специальные таблицы: inserted и deleted. В них содержатся списки строк, которые будут вставлены или уда- лены по завершении транзакции. Структура таблиц inserted и deleted идентична структуре таблиц, для которой определяется триггер. Для каждого триггера создается свой комплект таблиц inserted и deleted, поэтому никакой другой триггер не сможет полу- чить к ним доступ. В зависимости от типа операции, вызвавшей выполнение триг- гера, содержимое таблиц inserted и deleted может быть разным: команда INSERT – в таблице inserted содержатся все стро- ки, которые пользователь пытается вставить в таблицу. В таблице deleted не будет ни одной строки. После завершения триггера все строки из таблицы inserted переместятся в исходную таблицу; команда DELETE – в таблице deleted будут содержаться все строки, которые пользователь попытается удалить. Триггер может проверить каждую строку и определить, разрешено ли ее удаление. В таблице inserted не окажется ни одной строки; команда UPDATE – при ее выполнении в таблице deleted находятся старые значения строк, которые будут удалены при ус- пешном завершении триггера. Новые значения строк содержатся в таблице inserted. Эти строки добавятся в исходную таблицу после успешного выполнения триггера. Для получения информации о количестве строк, которое будет изменено при успешном завершении триггера, можно использовать функцию @@ROWCOUNT; она возвращает количество строк, обра- ботанных последней командой. Следует помнить, что триггер за- пускается не при попытке изменить конкретную строку, а в момент выполнения команды изменения. Одна такая команда воздействует на множество строк, поэтому триггер должен обрабатывать все эти строки. Если триггер обнаружил, что из 100 вставляемых, изменяемых или удаляемых строк только одна не удовлетворяет тем или иным условиям, то никакая строка не будет вставлена, изменена или уда- лена. Такое поведение обусловлено требованиями транзакции – должны быть выполнены либо все модификации, либо ни одной. 137
Страницы
- « первая
- ‹ предыдущая
- …
- 136
- 137
- 138
- 139
- 140
- …
- следующая ›
- последняя »