Форум: "Прочее";
Текущий архив: 2007.12.30;
Скачать: [xml.tar.bz2];
Вниз
MsSql2000+транзакции Найти похожие ветки
← →
em240 © (2007-11-27 10:14) [0]Есть хранимая процедура, которая включает в себя 3 update.
Если я явно не задаю начало и конец транзакции, то при запуске процедуры они происходят к контексте одной транзакции или 3-х?
← →
ЮЮ © (2007-11-27 10:18) [1]Одной, естественно.
З.Ы. ИМХО, на всякий случай :)
← →
DrPass © (2007-11-27 10:19) [2]
> Одной, естественно.
Трех, естественно. В MS SQL хранимые процедуры работают не в контексте транзакций. И для каждого update будет неявно создаваться своя транзакция и после выполнения автоматически будет делаться коммит
← →
Skyle © (2007-11-27 10:20) [3]Хранимая процедура суть транзакция.
← →
ЮЮ © (2007-11-27 10:24) [4]> И для каждого update будет неявно создаваться своя транзакция
> и после выполнения автоматически будет делаться коммит
На таком MS SQL я бы не стал рабртвть.
Слабу богу он ведет себя не так.
← →
em240 © (2007-11-27 10:26) [5]Версия 2000.
← →
Skyle © (2007-11-27 10:28) [6]Надо посмотреть на значение IMPLICIT_TRANSACTIONS, может и будет вести.
← →
DrPass © (2007-11-27 10:30) [7]
> Слабу богу он ведет себя не так.
См.
> Skyle © (27.11.07 10:28) [6]
По умолчанию так и ведет :)
← →
em240 © (2007-11-27 10:30) [8]Можно подробнее или ссылку? а то я запутался. :)
← →
ЮЮ © (2007-11-27 10:38) [9]> Надо посмотреть на значение IMPLICIT_TRANSACTIONS, может
> и будет вести.
Посмотрел. Действительно.
If the connection is already in an open transaction, the statements do not start a new transaction.
БДЕ-компоненты, помню, сами стартовали транзакцию. Как АДО - не уточнял, ибо в своем "ядре" все запросы выволняются в рамках чвно открытой транзакции.
Поэтому всегда работал в режиме If the connection is already in an open transaction
← →
em240 © (2007-11-27 10:39) [10]Так кто прав? :)
← →
Сусл © (2007-11-27 10:42) [11]
> [10] em240 © (27.11.07 10:39)
> Так кто прав? :)
ты, ибо лучшей доки, чем BOL (дока штатная от mssql) просто не видел.
← →
DiamondShark © (2007-11-27 12:53) [12]
> БДЕ-компоненты, помню, сами стартовали транзакцию
БиДЕ-компоненты вообще должны сдохнуть. Слишком они инициативные.
← →
em240 © (2007-11-27 14:02) [13]Если я явно не задаю начало и конец транзакции, то при запуске процедуры они происходят к контексте одной транзакции или 3-х?
т.е. если если какой то update
не отработает а другие отработаю то будет соммит?
← →
Skyle © (2007-11-28 06:18) [14]Практика - критерий истины.
← →
Bless © (2007-11-28 09:10) [15]
> em240 © (27.11.07 14:02) [13]
>
> Если я явно не задаю начало и конец транзакции, то при запуске
> процедуры они происходят к контексте одной транзакции или
> 3-х?
Три update-а, обернутых в хранимку, ничем в плане транзакций не отличаются от просто трех update-ов.
← →
Weter (2007-11-28 13:05) [16]т.е. если если какой то update
не отработает а другие отработаю то будет соммит?
Как правило по умолчанию так. В MS SQL 2000 несколько методов определения, а именно: автоматический, явный и подразумеваемый. Хотя реально два автоматический и неявный(подразумеваемый), явный можно рассматривать как надстройку на ними. Так вот по умолчанию используется автоматический режим, где каждая команда рассматриваться как отдельная транзакция. А вот при неявном режиме пока текущая тразакция не закоммитчена, то новая не начнется и если после каждого оператора явно не заканчивать транзакцию то все три update, в данном случае будут выполнтся в рамках одной транзакции. Команда переключения режима, как уже было сказано выше
SET IMPLICIT_TRANSACTIONS [ON|OFF]
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.12.30;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c