Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.09.11;
Скачать: [xml.tar.bz2];

Вниз

concurrent update   Найти похожие ветки 

 
Duncan   (2003-08-21 15:11) [0]

Ребята, подскажите как бороться с ошибкой "concurrent update"?


 
VAleksey   (2003-08-21 15:21) [1]

Тип БД и код.


 
Duncan   (2003-08-21 15:32) [2]

БД Interbase 6, параметры для транзакции: write, nowait, consistency.


 
Johnmen   (2003-08-21 16:05) [3]

Делать пишущие транзакции как можно короче.


 
Sandman25   (2003-08-21 16:23) [4]

... и чтобы работали они как можно быстрее.


 
Desdechado   (2003-08-21 16:39) [5]

ну, и если 2 юзера одну запись менять хотят, то это не совсем нормально (хотя, от задачи зависит). Кто последний, тот и папа :)


 
Duncan   (2003-08-21 17:00) [6]

Ну задача самая простая: 1 прога обновляет клиентские счета за разговоры, другая обновляет за трафик. И они умудряются пересекаться :-). А может использовать какой-нибудь exeption типа:
procedure zapros;
begin
try
Query.Open;
exсept on E:.... do begin
Sleep(500);
zapros; end
end
End;
Вот только что ставить вместо .....?


 
Duncan   (2003-08-22 09:22) [7]

Подскажите где можно толково (желательно с примерами) хотя бы почитать?


 
Zacho   (2003-08-22 09:28) [8]


> Duncan (22.08.03 09:22) [7]

http://www.ibase.ru/develop.htm , особое внимание обрати на http://www.ibase.ru/devinfo/ibtrans.htm


 
Sergey13   (2003-08-22 09:29) [9]

2Duncan (21.08.03 17:00) [6]
>Ну задача самая простая: 1 прога обновляет клиентские счета за разговоры, другая обновляет за трафик
Каким образом это работает сейчас? Код ведь просили уже.


 
Duncan   (2003-08-22 09:40) [10]

Криво конечно, но что-то типа этого:
qLogs.SQL.Clear;
qLogs.SQL.Add("update organization set orgThisMonth="+tm+", Money=Money-"+df+" where orgId="+IntToStr(orgId));
qLogs.Open;
qLogs.SQL.Clear;
qLogs.SQL.Add("insert into logs values (GEN_ID(LOG_GEN,1), "+IntToStr(orgId)+", "+IntToStr(tin)+", "+ IntToStr(tout)+", "+#39+DateToStr(Date)+#39+", "+#39+TimeToStr(tt)+#39+", "+#39+IP[j].ip+#39+", ");
if (IP[j].way) then qLogs.SQL.Add("1)") else qLogs.SQL.Add("0)");
qLogs.Open;
qLogs.SQL.Clear;
qLogs.SQL.Add("commit");
qLogs.Open;
собсвенно во втоорой проге что-то типа этого же.


 
Zacho   (2003-08-22 09:43) [11]


> Duncan (22.08.03 09:40) [10]
> qLogs.SQL.Add("commit");

Это еще что ??? Нет такого оператора SQL в IB.


 
Sergey13   (2003-08-22 09:58) [12]

2Duncan (22.08.03 09:40) [10]
1. Ведение лога логичнее было бы переложить на тригер. И быстрее и надежнее.
2.А не правильнее было бы qLogs.Execute вместо qLogs.Open?
3.Что то я сомневаюсь в такой организации транзакций. Более опытные IB-шники пусть меня поправят.
4.Вместо динамического создания запросов лучше использовать запросы с параметрами. И работают быстрее и читаются лучше.


 
Johnmen   (2003-08-22 10:08) [13]

IBTransaction.StartTransaction;
qLogs.SQL.Clear;
qLogs.SQL.Add...;
qLogs.SQL.ExecSQL;
...
IBTransaction.Commit;


 
Duncan   (2003-08-22 12:12) [14]

Попробуем последний вариант.
Спасибо за помощь!



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.09.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
3-33495
SRom
2003-08-22 11:20
2003.09.11
Oracle: редактирование таблицы


1-33556
Adoon
2003-08-28 18:04
2003.09.11
Character Map


1-33538
konst
2003-08-29 12:11
2003.09.11
MDI формы. Как отобразить дочернюю форму, и какие события


3-33442
frost
2003-08-21 10:40
2003.09.11
TMemoField.Text и присвоение строки String


3-33471
Slaviq
2003-08-20 15:57
2003.09.11
Как правильно удалять, эдитить, в СКюЛ используя две БД





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский