Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
no-insert
Guest |
Ситуация: есть некая транзакция, затрагивающая несколько таблиц. Часть вносимых в транзакции изменений обязательны, часть - нет. Необходимо отменить некоторые из необязательных изменений (вставку в некоторую таблицу), сохранив обязательные изменения - по этой причине выброс в триггере исключения и откат транзакции не подходят. Можно ли как-то в триггере сделать так, чтобы вставка в таблицу просто молча пропускалась? SQL Server 2008. |
9 дек 13, 13:42 [15264393] Ответить | Цитировать Сообщить модератору |
Crimean Member Откуда: Сообщений: 13147 |
если буквально то INSTEAD OF триггер. но то что вы хотите сделать - очень, очень и очень плохо куда правильнее вставлять по 1 записи, "кривые" - таки ролбечить, но "снаружи" это все ловить через TRY а еще правильнее - сначала, до вставки, решить что "хорошо", а что "плохо" и вставлять только то, что "хорошо" |
9 дек 13, 13:46 [15264422] Ответить | Цитировать Сообщить модератору |
просто вышел погулять
Guest |
Вам нужен INSTEAD OF триггер |
9 дек 13, 13:47 [15264436] Ответить | Цитировать Сообщить модератору |
no-insert
Guest |
Crimean, проблема в том, что вставка осуществляется внешним и не нашим приложением, и вмешаться в его логику нет возможности. Но у приложения БД доступна для изменений в рамках разумного. Вот и пытаемся как-то допилить это хозяйство. А instead of мне и самому не очень нравится. Возможно, обойдется сервисом/джбом, подчищающим ненужные вставки (их не очень много). |
9 дек 13, 13:51 [15264469] Ответить | Цитировать Сообщить модератору |
Crimean Member Откуда: Сообщений: 13147 |
компромисс - вставлять "не туда". а "туда" - переносить тем самым "джобом", о котором вы говорите вплоть до инициации "того самого" джоба триггером на "не туда" табличке :) |
9 дек 13, 13:53 [15264497] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |