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

Вниз

Транзакции   Найти похожие ветки 

 
Jaxtor   (2003-04-24 10:22) [0]

Добрый день! Вот делаю я команду INSERT INTO () VALUES () из хранимой процедуры
в цикле клиентской программы, транзакцию не подтверждаю, хотелось бы увидеть вставленные записи в DBGrid, не подтверждая эту транзакцию. Как это сделать?


 
Соловьев   (2003-04-24 10:27) [1]

сделать селект


 
Orlan Master   (2003-04-24 10:28) [2]

Лучше поменять тактику. Не есть хороший манера подвешивать транзакцию. Лучше попробовать работать на уровне кэшированных обновлений на уровне клиента, и откатывать не транзакцию, а клиентский кэш.


 
Zacho   (2003-04-24 10:28) [3]

SELECT и хранимая процедура должны выполняться в одной транзакции


 
Jaxtor   (2003-04-24 10:29) [4]

>сделать селект
А транзакция не подтверждена.


 
Jaxtor   (2003-04-24 10:30) [5]

>Zacho Попробую в одной транзакции


 
Johnmen   (2003-04-24 10:31) [6]

>Jaxtor © (24.04.03 10:29)
>А транзакция не подтверждена.

И что ?


 
Соловьев   (2003-04-24 10:31) [7]


> А транзакция не подтверждена.



> Zacho © (24.04.03 10:28)



 
Соловьев   (2003-04-24 10:41) [8]


> сделать селект

я имел в виду, что хочешь посмотреть - кто же тебе мешает? сделай селект посмотри - понравилось - вставляй.


 
Orlan Master   (2003-04-24 10:47) [9]

А в это время кто-то другой залез и использует неподтвержденные данные под себя, пока вы оцениваете их достовеность. Уважаемые, нарушается концептуальное правило неделимости транзакции. К тому же, если вы используете блокируюущую транзакцию, то другие, в том числе и вы не получите выборки, ведь читать промежуточный результат вы будете в другой транзакции. А она не отдаст результата, если предыдущая транзакция не завершена. Правда, если не используется уровень изоляции ReadUncommited. Тогда каков смысл транзакции ваще?


 
Zacho   (2003-04-24 10:52) [10]


> Orlan Master (24.04.03 10:47)

В IB нет никакого ReadUncommited. И ничего не нарушится. И кто сказал, что "читать промежуточный результат вы будете в другой транзакции" ? Пойми, IB - версионник, и работа с транзакциями в нем сильно отличается от, например, MSSQL


 
Johnmen   (2003-04-24 10:52) [11]

>Orlan Master (24.04.03 10:47)
>Тогда каков смысл транзакции ваще?

Про это пишут в книгах...:) Рекомендую почитать на досуге...




 
Orlan Master   (2003-04-24 10:57) [12]

>Про это пишут в книгах...:) Рекомендую почитать на досуге...
Да я их уже перечитал столько... К тому же в моем опыте построение корпоративной распределенной инф. системы. Причем построенной мною в одиночку. И все замечательно работает.
Я про транзакции спросил приминительно к контексту разговора. Каков реальный смысл городить огород с транзакцией, а не использовать альтернативный, и на мой взгляд более выгодный способ решения задачи?


 
Zacho   (2003-04-24 11:06) [13]


> Orlan Master (24.04.03 10:57)

Смысл может быть в том, что CachedUpdates довольно глюкав. Правда это зависит от компонент доступа и, естественно, ручек программера :-)


 
Orlan Master   (2003-04-24 11:10) [14]

Категорически согласен. Сам иду по пути отыскивания алтернатив с минимизации глюкавости. Но по крайней мере ADO BatchUpdate работает корректно. И легко управляется. Но уже не помню как это было для IB cachedupdates. Возился я с этим около трех лет назад.


 
Jaxtor   (2003-04-24 15:08) [15]

Ну так какие параметры мне ставить для транзакции, чтобы SELECT
смог прочитать неподтвержденные записи?


 
Jaxtor   (2003-04-24 15:51) [16]

SELECT не работает....


 
Zacho   (2003-04-24 15:57) [17]

Еще раз: выполнение ХП и SELECT должны быть в одной транзакции.


 
Jaxtor   (2003-04-24 16:04) [18]

Ладно, попробую еще раз проверить, но мне кажется они в одной
транзакции находятся.


 
Jaxtor   (2003-04-25 16:34) [19]

Ну вот, делаю StartTransaction. Commit, Rollback, CommitRetaining
не делаю нигде.

SELECT у меня вызывается из
набора данных типа TIBDataSet:

select SNAKL_PROC.* from SNAKL_PROC(:NaklID)




 
Jaxtor   (2003-04-25 16:36) [20]

Не получается. Может какой-нибудь Refresh надо делать?


 
Zacho   (2003-04-25 17:06) [21]


> Jaxtor © (25.04.03 16:36)


Ну вот такой пример:
Одна TIBTransaction, TIBDataSet и TIBSQL. Естественно,к IBDataSet и IBSQL подключен один и тот же IBTransaction. В IBSQL.SQL - "INSERT INTO MY_TABLE(ID,NAME) VALUES(GEN_ID(MY_GEN,1),"Тра-ля-ля")
IBDataSet.SelectSQL - "SELECT * FROM MY_TABLE"
Итак:
IBTransaction.StartTransaction;
IBSQL.ExecQuery;
IBDataSet.Open;
И в IBDataSet видим запись, вставленную IBSQL.

Если ничего не получится - опиши все подробнее - запросы, св-ва IBDataSet и IBTransaction и т.п., и кусок кода, в котором ты запускаешь ХП и делаешь селект.


 
Jaxtor   (2003-04-25 17:13) [22]

>Zacho У меня к IBDataSet"u привязана хранимая процедура.
Собственно можно попробовать использовать другие компоненты,
IBQuery, IBSQL...


 
Zacho   (2003-04-25 17:22) [23]


> Jaxtor © (25.04.03 17:13)

Да собственно не важно, какие компоненты, то, что я привел - только пример, главное - что бы и вставка записей, и последующая их выборка были в одной транзакции.


 
Jaxtor   (2003-04-25 17:25) [24]

Через IBQuery все работает:)) Проблема решена.



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

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

Наверх




Память: 0.49 MB
Время: 0.007 c
4-60003
Step[B.M.]
2003-03-01 12:42
2003.05.19
Как из моей проги запустить другой exe-шник, да еще с параметрами


1-59659
Евгений
2003-05-06 23:06
2003.05.19
Как мне записать массив в файл


1-59746
MGA
2003-05-05 14:16
2003.05.19
Как писать программы без VCL?


6-59829
delkos
2003-03-22 21:32
2003.05.19
Открытие веб страницы


3-59560
valmont
2003-04-26 06:10
2003.05.19
DBGrid и номер строки





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