Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.031 c
1-1089890552
Уток
2004-07-15 15:22
2004.08.01
Получить изображение из вебстранички


6-1085978955
Александр
2004-05-31 08:49
2004.08.01
Передача данных по сети


14-1090006141
Rouse_
2004-07-16 23:29
2004.08.01
LOL


14-1089280477
Layner
2004-07-08 13:54
2004.08.01
Грузия - Осетия...


1-1090081522
alice
2004-07-17 20:25
2004.08.01
$00000000





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский