Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
abrashka Member Откуда: Сообщений: 517 |
День добрый! Существует таблица MyTable и триггер, который записывает ID всех измененных строк в этой таблице в таблицу AuditTable . Т.е. если выполняю: update table MyTable set Name='abc' where ID>1000 and ID<2000 То в таблицу AuditTable записываются все ID от 1000 до 2000 строк, которые были изменены. Интересует несколько вопросов: 1) Если в приведенном выше примере было изменено 1000 строк, то триггер выскакивает 1000 раз, или один раз? 2) И апдейт таблицы и запись в идет в одной транзакции? Т.е. если апдейт строки с ID=444 по какой либо причине не выполнился, то идет откат и всех выполненых изменений и в MyTable и в AuditTable тоже не произойдет никаких изменений? 3) Если триггер не просто записывает ID измененной строки, а производит какое-либо "тяжелое" вычисление и записывает результат в AuditTable , то MyTable будет заблокирована до тех пор, пока не закончится и апдейт MyTable и запись в AuditTable? 4) Если, например, нет возможности записать в AuditTable, скажем деление на ноль в вычислении, то произойдет и откат MyTable и AuditTable? Спасибо! |
30 дек 13, 11:34 [15363925] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
1. триггер срабатывает на команду, а не строки 2. триггер выполняется в транзакции, которую начала его команда 3. да 4. да |
30 дек 13, 11:37 [15363945] Ответить | Цитировать Сообщить модератору |
abrashka Member Откуда: Сообщений: 517 |
Glory, Спасибо огромное! Вот еще один вопрос в догонку к предидущему примеру, если выполняется такая транзакция: begin transaction MyTran update t1... update table MyTable set Name='abc' where ID>1000 and ID<2000 update t2... commit transaction MyTran и падает update t2, то откатываются изменения в MyTable и в AuditTable тоже? |
30 дек 13, 12:02 [15364070] Ответить | Цитировать Сообщить модератору |
sphinx_mv Member [заблокирован] Откуда: Сообщений: 1672 |
|
||
30 дек 13, 13:06 [15364534] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |