Форум: "Базы";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];
ВнизТранзакция на стороне клиента Найти похожие ветки
← →
Hooch (2004-02-09 14:19) [0]День добрый !
Как в хранимой процедуре можно узнать что транзакция стартована с клиента ? т.е. на клиенете пишем
adoConnection.BeginTrans;
if adoConnection.InTransaction then
try
adoConnection.Execute("test");
adoConnection.CommitTran;
except
adoConnection.RollbackTrans;
end;
процедура test
create procedure test as
begin
if @@TranCount = 0
raiserror("no tran", 16, 10)
end
в результате выполнения на клиенте получаем "no tran"
← →
KSergey (2004-02-09 14:22) [1]Сказать по-правде, хоть это и не ответ на вопрос, но лучше уж тогда на сервере же транзакциями и рулить, а не пускать их с клиента...
А вообще, конечно, занятно...
← →
Hooch (2004-02-09 14:31) [2]
> но лучше уж тогда на сервере же транзакциями и рулить, а
> не пускать их с клиента
отсюда вопрос и пошел, начал переносить транзакции на сервер, и случайно напоролся на такой странный эффект
← →
KSergey (2004-02-09 14:33) [3]Значит забыть об нем как о страшном сне и не пользовать в дальнейшем ;) На неувязочку плюнуть - есть и другие задачи.
Хотя поразбираться и занятно ;)
← →
VLAD-MAL (2004-02-09 15:07) [4]Типа, э ...
Ответ:
Ну, раз мы уже в процедуре, то кто-то на клиенте транзакцию все-таки стартанул :)
А транзакции на сервере не запустишь. Они ж транзакции, их родители - всегда коиенты.
Может, тебя интерусиет что-нибудь другое, типа с какого компьютера было подключение?
← →
Nikolay M. (2004-02-09 15:52) [5]
> А транзакции на сервере не запустишь. Они ж транзакции,
> их родители - всегда коиенты.
С какого потолка взят этот бред? Или я понял не то, что тут имелось ввиду?
По сабжу: как вариант, можно сделать в процедуре дополнительный параметр-флажок, который будет указывать, запущена процедура с клиента или с сервера.
А вообще мне лично непонятен смысл сих манипуляций, не говоря уже о ненадежности варианта, когда транзакциями рулит клиент.
← →
VLAD-MAL (2004-02-09 15:55) [6]2 Nikolay M. © (09.02.04 15:52) [5]
С какого потолка взят этот бред? Или я понял не то, что тут имелось ввиду?
Вы не согласны?
← →
ZrenBy (2004-02-09 15:58) [7]Я не согласен с VLAD-MAL
Я согласен с Nikolay M.
А транзакции на сервере не запустишь. - это бред
← →
VLAD-MAL (2004-02-09 16:00) [8]Ну, за удачу!
← →
Nikolay M. (2004-02-09 16:31) [9]
> VLAD-MAL (09.02.04 15:55) [6]
> 2 Nikolay M. © (09.02.04 15:52) [5]
> С какого потолка взят этот бред? Или я понял не то, что
> тут имелось ввиду?
> Вы не согласны?
Нет, конечно.
BEGIN TRANSACTION
ROLLBACK TRANSACTION
COMMIT TRANSACTION
из T-SQL reference о чем-нибудь говорит?
← →
VLAD-MAL (2004-02-09 16:41) [10]Ох-хо-хо.
← →
Sandman25 (2004-02-09 16:45) [11]Есть ХП генерации документа. Есть 2 варианта использования данной ХП - либо она запускается независимо (и тогда транзакция должна быть начата и закончена самой ХП-ой), либо она запускается из другой ХП, которая кроме вызова первой ХП сама тоже работает с БД (документ из первой ХП становится частью группы документов). Во втором случае транзакция начинается и заканчивается из "внешней" ХП.
В качестве решения используется дополнительный параметр ХП, как предлагал и
[5] Nikolay M. © (09.02.04 15:52). В случае возникновения исключения ХП проверяет по параметру, следует ли откатывать транзакцию, или это сделает внешняя процедура.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c