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

Вниз

Кеш базы???   Найти похожие ветки 

 
Кузьмич   (2015-06-29 13:18) [0]

Всем доброго времени суток! Столкнулся с одной непоняткой.
Юзаю Firebird 2.5, пишу инфу в базу хранимками. Например в поле MyField(Numeric 15/2) базы начальное значение: 1 Читаю в проге,вижу 1. Потом пишу значение 2,сразу после записи читаю и вижу прежнее, тоесть 1. Но IBExpert показывает в это время что 2 успешно записалось. Затем для теста делаю по другому,читаю и вижу 1,пишу 2,connect=false,connect=true снова читаю и вижу 2 как и должно быть. В чем может быть трабла?


 
brother ©   (2015-06-29 13:20) [1]

комит?


 
Ega23 ©   (2015-06-29 14:00) [2]


> сразу после записи читаю и вижу прежнее, тоесть 1


В пишущей транзакции - будет 2. В другой, будет 1 до коммита пишущей, после будет 2. В случае отката пишущей - значение не изменится.


>  Но IBExpert показывает в это время что 2

Значит где-то между записью в твоей транзакции и чтением в IBExpert произошёл коммит.


 
кгшзх ©   (2015-06-29 14:30) [3]

http://delphimaster.net/view/2-1435321941/


 
Кузьмич   (2015-06-29 15:24) [4]

Хранимка:

begin
 if (:fin_id < 0) then
 begin
   insert into MyTable(MyField)
   values (:FIN_MyField);
 end
 else
 begin
   update
     MyTable
   set
     MyField=:FIN_MyField
   where
     id = :fin_id;
 end
end

Пишу в проге своей процедурой:

procedure RecordData(r:Real;sid:String);
begin
try
   with DataModule1.IBQuery1 do
   begin
   SQL.Text := "execute procedure PROCMYTABLE(" + sid +",:Name_param1)";
   DataModule1.IBQuery1.ParamByName("Name_param1").Value :=r;
   if not Transaction.Active then Transaction.StartTransaction;
   ExecSQL;
   Transaction.Commit;
   Transaction.Active := false;
   end;
 except
   on E: Exception do
   begin
     if DataModule1.IBQuery1.Active then DataModule1.IBQuery1.Transaction.Rollback;
     Application.MessageBox(PChar(E.Message), "Ошибка отката данных", MB_ICONERROR);
   end;
 end;
end;

К IBQuery1 прикручен IBTransaction(DefaultAction=TACommit)
В sid передаю нужный ID, в r нужное значение

Читаю сразу после записи с помощью IBQuery так: select MyField from MyTable
ParamChek=True

Что делаю не так? Может IBQuery1.Close в начале процедуры нужен?


 
кгшзх ©   (2015-06-29 15:41) [5]

http://delphimaster.net/view/2-1435321941/


 
Кузьмич   (2015-06-29 15:46) [6]

Только начал осваивать SQL, по ссылке кгшзх не совсем понятна причина проблемы. Если можно обьясните подробнее. Спасибо!


 
brother ©   (2015-06-29 15:50) [7]

да не обращай внимания, он у нас нервный аноним... бывает...


 
кгшзх ©   (2015-06-29 16:08) [8]

ты слушай бразера. он в курсе причины.
и не нервный аноним.


 
Кузьмич   (2015-06-29 16:13) [9]

Понятно что ничего не понятно... ((



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

Форум: "Начинающим";
Текущий архив: 2017.03.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.002 c
2-1435261914
Drowsy
2015-06-25 22:51
2017.03.05
Какие явные признаки, что заплатка Delphi 6 Update 2 установлена?


2-1435321941
TheEd
2015-06-26 15:32
2017.03.05
Не работает DataSet.Refresh, или можно ли обойтись без CloseOpen?


15-1458293246
DayGaykin
2016-03-18 12:27
2017.03.05
VCL для веб


1-1349099238
jacksotnik
2012-10-01 17:47
2017.03.05
Вопрос по ZipMaster


2-1435573097
Кузьмич
2015-06-29 13:18
2017.03.05
Кеш базы???





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