2010-11-16 3 views
0

Я думаю, это немного грубо, чтобы задать этот вопрос, так как я должен приложить усилия (больше, чем поиск в Google), чтобы понять это сам, но, возможно, кто-то знает ответ от его головы.Сколько хранимых вызовов процедур за транзакцию?

Сколько хранимых вызовов процедур выполняется для каждой транзакции (MS SQL 2005/2008)? Скажем, я создал хранимую процедуру, которая запускается на вставках и из приложения Java, я фиксирую только один раз, когда все инструкции insert были отправлены. Выполняется ли хранимая процедура при каждой вставке или только после того, как я зафиксирую ее? Или это зависит от того, как я настроил хранимую процедуру?

Приветствия, Max

+0

Вы говорите о хранимых процедурах или триггерах? –

+0

Оба в пути. Триггер вызывает хранимую процедуру, поэтому либо я изменяю триггер, чтобы запускать только один раз для каждой транзакции или хранимой процедуры, чтобы она возвращалась без каких-либо действий, если не произошла фиксация. – Max

ответ

1

Триггер будет срабатывать один раз для каждого INSERT заявление. Таким образом, хранимая процедура будет запускаться каждый раз при запуске триггера. Количество казней не связано с тем, когда совершена транзакция.

+0

Спасибо. Можно ли изменить триггер, чтобы он срабатывал только в конце всплеска INSERT (т. Е. Фиксации)? – Max

+0

Нет, триггер вставки предназначен для запуска, когда оператор INSERT выполняется в таблице. Однако, с некоторой дополнительной работой, вы могли бы избежать этого. Вы можете посмотреть триггеры INSTEAD OF, которые могут заменить работу триггера INSERT (не уверен, что это сработает для вас). Или у вас нет спускового крючка. Затем вам нужно будет добавить шаг кодирования в другом месте (непосредственно перед фиксацией и, возможно, на Java), который выполняет работу, которую вы хотите сделать в триггере. – bobs

+0

Хорошая точка. Я начинаю сомневаться в моем дизайне. Триггер должен был указывать изменения UPDATE/INSERT в таблице. Поскольку у меня есть полный контроль над всеми приложениями, изменяющими данные, я мог бы также не переходить через базу данных, чтобы вообще указывать на изменение, и указывать изменение непосредственно через различные средства передачи сообщений. Еще раз спасибо. – Max

Смежные вопросы