Форум: "Базы";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
ВнизCOMMIT в ХП Найти похожие ветки
← →
3APA3A (2004-07-08 14:29) [0]Что то не получается...
Создаю в IB Console ХП
SET TERM!!;
CREATE PROCEDURE CREATE_CONF_COPY(NAME VARCHAR(32))
RETURNS
AS
BEGIN
INSERT INTO MYTABLE(STR) VALUES(:NAME);
COMMIT;
END!!
SET TERM;!!
IB Console мне говорит что Token unknown, line 6 char 3, то есть указывает как раз на первый символ COMMIT...
Как сделать, что бы данные в ХП добавлялись и сразу им COMMIT делался?
← →
Johnmen © (2004-07-08 14:30) [1]Никак. Т.к. управление тр-ми прерогатива клиента.
← →
3APA3A (2004-07-08 14:39) [2]То есть, мне на клиенте надо после вызова ХП делать COMMIT?
Как то неудобно получается...
← →
Johnmen © (2004-07-08 14:42) [3]Ну ещё неудобно руль самому крутить...
:)))
← →
3APA3A (2004-07-08 14:47) [4]Да, и ложку самому держать... =)
Мне просто интересно, почему нет такой возможности в IB/FB... Ведь очень удобно, блин...
← →
Соловьев © (2004-07-08 14:49) [5]
> Ведь очень удобно, блин...
где удобно? у сервера что искуственный интелект чтобы он конфликты решил?
← →
3APA3A (2004-07-08 14:56) [6]Если в моем insert"е возникнет exception, сервер выйдет из ХП и автоматом вызовет ROLLBACK, правильно?
← →
Johnmen © (2004-07-08 14:57) [7]Нет.
← →
3APA3A (2004-07-08 15:01) [8]А что он(сервер) сделает?
← →
Digitman © (2004-07-08 15:02) [9]
> 3APA3A (08.07.04 14:47) [4]
> Мне просто интересно, почему нет такой возможности в IB/FB...
> Ведь очень удобно, блин...
а ты представь себе простейшую, что клиент осуществляет согласованную модификацию двух баз одновременно , запустив в каждой свою транзакцию и стартуя последовательно ХП в каждой ...
ХП1 в базе 1 выполнилась успехно и подтвердила транзакцию
ХП2 в базе 2 вызвала искл.ситуацию и неподтвердила транзакцию
что делать клиенту ? он в шоке ! в базе 1 изменения уже подтверждены и их никак не откатить, хотя именно это именно сейчас и требуется - ведь изменения-то в базах должны быть согласованы !
подумай головой-то ...
← →
Digitman © (2004-07-08 15:04) [10]
> что он(сервер) сделает?
ничего он не сделает
он вернет статус ошибки клиенту
клиент же волен после этого изменить кондиции на нужные и повторно запустить ХП либо откатить транзакцию, ибо это его, клиента, прерогатива !
← →
3APA3A (2004-07-08 15:09) [11]не настолько уж это и простейший пример - модификация двух баз сразу... тут я понял почему в ХП нельзя COMMIT писать...
но, если я делаю изменения в одной базе в двух табицах - в ХП сделал все эти изменения и все, либо COMMIT всего, либо ничего...
← →
Desdechado © (2004-07-08 15:10) [12]IB не поддерживает автономных (в терминах Оракла) транзакций. Имхо, это правильно.
А то ты попробуешь потом после коммита в процедуре еще какой-нить инсерт сделать... И это будет уже другая (незавершенная) транзакция?
← →
3APA3A (2004-07-08 15:15) [13]Я не работал с Oracle и не знаю, что в его терминах значит "автономная транзакция"
Ну да... по крайней мере - мне хотелось бы видеть это именно так...
← →
Digitman © (2004-07-08 15:17) [14]
> тут я понял почему в ХП нельзя COMMIT писать
уже радует
> если я делаю изменения в одной базе в двух табицах - в ХП
> сделал все эти изменения и все, либо COMMIT всего, либо
> ничего...
мне вот непонятно, это что, так сложно или нонсенс - управлять транзакцией на кл.стороне
старт_транзакции
try
.. вызов_ХП
подтверждение_транзакции
except
откат_транзакции
raise;
end;
??
← →
3APA3A (2004-07-08 15:22) [15]Я тут, пока спорили, почитал в других местах и немного осмыслил все это (как мне кажется =))...
Да ну не так уж и сложно это, но все равно... (горбатого могила исправит... =) )
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.036 c