Форум: "Базы";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
ВнизИ снова транзакции! Найти похожие ветки
← →
maximus_ © (2004-07-02 12:16) [0]Я дико извиняюсь, но опять вопрос про транзакции!
Если делать так:
IBDataSet1.Insert;
IBDataSet1.FieldByName("NUMBERING").AsInteger:=1;
IBDataSet1.FieldByName("TEXT1").AsString:="TEST1";
IBDataSet1.FieldByName("TEXT2").AsString:="TEST2";
IBDataSet1.Post;
Естественно при повторном открытии запроса данных уже нет!
при добавлении:
IBTransaction1.Commit;
и при повторном открытии запроса опять ничего не записывается!
В установках IBTransaction1 стоит: READ COMMITED;
IBDataSet все запросы (modify, insert...) сформированны автоматом!
Вопрос:
1)
Для подтверждении транзакции достаточно ли строки
IBTransaction1.Commit; ?
2)
IBTransaction1.StartTransaction;
--
--
IBTransaction1.Commit;
Расценивается как операторные скобки?
перечитал уже 5 раз главу управление транзакциями, сделал все как написано, но остановился на подтверждении...
← →
Соловьев © (2004-07-02 12:18) [1]
> IBTransaction1.Commit; ?
достаточно
2 - не понятно
← →
Курдль © (2004-07-02 12:18) [2]А уточнить, что в запросах на добавление, модификацию, удаление?
← →
maximus_ © (2004-07-02 12:20) [3]>А уточнить, что в запросах на добавление, модификацию, удаление?
на добавление!!!
>2 - не понятно
Хорошо, вопрос будет так: в каких случаях используется IBTransaction1.StartTransaction;
← →
Соловьев © (2004-07-02 12:21) [4]
> на добавление!!!
:)))
тебя просят показать их
← →
Курдль © (2004-07-02 12:22) [5]
> maximus_ © (02.07.04 12:20) [3]
> >А уточнить, что в запросах на добавление, модификацию,
> удаление?
>
> на добавление!!!
Я хотел посмотреть содержимое, а не факт наличия :)
← →
maximus_ © (2004-07-02 12:25) [6]Sorry,
insert into TEST
(NUMBERING, TEXT1, TEXT2)
values
(:NUMBERING, :TEXT1, :TEXT2)
← →
Johnmen © (2004-07-02 12:30) [7]>Естественно при повторном открытии запроса данных уже нет!
Э-э-э... Откуда естественность ?
← →
Курдль © (2004-07-02 12:30) [8]CachedUpdates := ?
← →
maximus_ © (2004-07-02 12:31) [9]true
← →
maximus_ © (2004-07-02 12:33) [10]Сейчас попробовал так:
insert into TEST
(NUMBERING, TEXT1, TEXT2)
values
(:OLD_NUMBERING,
:OLD_TEXT1,
:OLD_TEXT2)
Все равно ничего не меняет!
← →
Соловьев © (2004-07-02 12:34) [11]
> [10] maximus_ © (02.07.04 12:33)
выполни запрос в эксперте - меняет?
← →
Курдль © (2004-07-02 12:36) [12]А!!!!!!!! Ну тарды забей на транзакции (это я как дохтур рекомендую) Т.е. вообще забудь - ты на правильном пути.
И делай такTIBDatabase.ApplyUpdates([IBDataSet]);
Я считаю, что это лучший вариант, хоть можно и поспорить.
В данном случае транзакция откроется автоматически, при успешной операции автоматически подтвердится, а при ошибке - автоматически откатит изменения.
← →
maximus_ © (2004-07-02 12:39) [13]Открываю SQL редактор:
1) выполняю запрос!
2) пишет: 1 record(s) was(were) inserted into TEST
3) нажимаю в редакторе коммит!!! изменений не вижу в самой таблице!
4) в окне таблицы нажимаю еще раз коммит, и она занесена!!!
← →
Соловьев © (2004-07-02 12:40) [14]
> это я как дохтур рекомендую
действительно - дохтур. сорри если обдел.
2 maximus_ © - не слушай. Управляй сам транзакциями.
← →
Соловьев © (2004-07-02 12:41) [15]
> изменений не вижу в самой таблице!
там тоже надо коммит нажать.
← →
maximus_ © (2004-07-02 12:49) [16]2Соловьев ©>
это я понял что там тоже надо коммит нажать!
я то имел ввиду как это делать программно!
2Курдль ©>
Попробовал работает!!!
Но я думаю что Соловьев прав!
← →
Курдль © (2004-07-02 12:51) [17]
> Соловьев © (02.07.04 12:40) [14]
> 2 maximus_ © - не слушай. Управляй сам транзакциями.
Возможно я и не прав. Большое достоинство участия на форуме - процесс обучения, самообучения и приема чужого опыта.
Так не подскажешь, зачем в данном конкретном случае автору самому управлять транзакциями?
> Курдль © (02.07.04 12:30) [8]
> CachedUpdates := ?
> maximus_ © (02.07.04 12:31) [9]
> true
Так ты что с этим решил? Тебе надо либо CachedUpdates := False, либо [12]
← →
Соловьев © (2004-07-02 12:54) [18]
> я то имел ввиду как это делать программно!
Мы говорили про эксперт. У тебя было свойство CachedUpdates включено. Выключи его. И будет тебе счастье.
> Так не подскажешь, зачем в данном конкретном случае автору
> самому управлять транзакциями?
Это нормально. можно конечно и как Вы предлагаете, но имхо для начинающих сразу понять, что транзакции в СУБД не 5-я нога.
← →
maximus_ © (2004-07-02 12:55) [19]2Курдль ©>
Вот хрень блин!!! Уже 2 часа парился с этим!
Действительно надо "CachedUpdates := False"
А это я на будущее возьму на вооружение:
IBDatabase1.ApplyUpdates([IBDataSet1]);
>> Так не подскажешь, зачем в данном конкретном случае автору самому управлять транзакциями?
Научиться надо!
← →
Sergey_Masloff (2004-07-02 12:56) [20]Соловьев © (02.07.04 12:40) [14]
>2 maximus_ © - не слушай. Управляй сам транзакциями.
Совет сомнительный. Для бОльшей части типовых задач стандартная обработка транзакций вполне приемлемое решение.
← →
Соловьев © (2004-07-02 12:58) [21]
> Для бОльшей части типовых задач стандартная обработка транзакций
> вполне приемлемое решение.
не спорю. но автор хочет я так понял разобраться с ними или как? примеры вот по книге делает. думаю, если конечно в БД пару таблиц, и простенький отчет с одним пользователем, то транзакции можно отдать компонентам.
← →
Курдль © (2004-07-02 13:00) [22]
> Научиться надо!
А чё там учиться? Если на Паскале ты умеешь:то бОльшую часть понятия о транзакциях имеешь!
if a = 1 then
begin
b := 2;
end;
Так что дальше можешь спокойно писать
if a = 1 then b := 2;
← →
Курдль © (2004-07-02 13:15) [23]
> Соловьев © (02.07.04 12:58) [21]
> думаю, если конечно в БД пару таблиц, и простенький отчет с одним пользователем, то транзакции можно отдать компонентам.
А я так не думаю! Даже при весьма сложненьких отчетах и множеством таблиц, нормально отрабатывает конструкцияDatabase.ApplyUpdates([DataSet1, DataSet1, ...DataSetN]);
Явные транзакции только усложняют код и лучше их применять, когда происходит связанное обновление данных разными модулями и в прочих нетривиальных ситуациях.
← →
jack128 © (2004-07-02 18:39) [24]
> А чё там учиться? Если на Паскале ты умеешь:
>
> if a = 1 then
> begin
> b := 2;
> end;то бОльшую часть понятия о транзакциях имеешь
Да?
а вот все это - это так.. Мелочи..?
http://www.ibase.ru/devinfo/ibtrans.htm
А потом появляются вопросы, типа "а почему я делал коммит, а данных не видно?"
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.043 c