Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.01;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.026 c
14-1089731821
ded rf
2004-07-13 19:17
2004.08.01
Как узнать код мобильного оператора


3-1089199879
Андрей
2004-07-07 15:31
2004.08.01
Edit в DBGrid, который связан с Query


14-1089912596
emike
2004-07-15 21:29
2004.08.01
партитуры ударных


14-1089465018
VID
2004-07-10 17:10
2004.08.01
Как поднастроить файрвол (ZoneAlarm 4.5.538.001)


1-1089874266
Dysan
2004-07-15 10:51
2004.08.01
распознаване текста