powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Курсор без транзакции
6 сообщений из 6, страница 1 из 1
Курсор без транзакции
    #35142273
Фотография Zashibis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема такая - нужно создать курсор, который бы не зависел от транзакции.
1) Создаем курсор, немного бегаем по нему
2) BEGIN
3) некоторые действия с базой
4) COMMIT
5) продолжаем бегать по тому же курсору

Стандартными средствами DECLARE это невозможно, она работает только внутри транзакций или ХП.
Покопался в документации, наткнулся на SPI
http://www.postgresql.org/docs/8.2/static/spi.html
Вопрос: если я напишу процедуру на С, которая вызывает метод SPI_cursor_open и создает курсор, после выхода из процедуры курсор сохранится или разрушится? Кто-нибудь пробовал такое? И можно ли будет вызвать такую процедуру на С вне транзакции?
Ореинтируюсь так же на:
http://www.postgresql.org/docs/8.2/static/view-pg-cursors.html
...
Рейтинг: 0 / 0
Курсор без транзакции
    #35142389
Dan Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант, можно попробовать использовать dblink
З.Ы.
А почему в программе нельзя просто параллельно открыть второе соединенине?
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
Курсор без транзакции
    #35142440
Фотография Zashibis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм, действительно, почему бы не открыть второе соединение...а dblink разве не тоже самое?
Подумаю, не повлияет ли это на работу транзакции.
...
Рейтинг: 0 / 0
Курсор без транзакции
    #35142763
domanix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто вам сказал что Стандартными средствами DECLARE это невозможно?
Код: plaintext
1.
2.
DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]
    CURSOR [ { WITH | WITHOUT } HOLD ] FOR query
Обратите внимание на параметр WITH HOLD

Код: plaintext
WITH HOLD specifies that the cursor can continue to be used after the transaction that created it successfully commits.

IMHO: Физически это выглядит так- результат запроса скидывается на диск и по нему идет навигация вперед и назад - до тех пор пока курсор не будет закрыт явно.. ( Именно таким образом достигается независимость от транзакции)...
...
Рейтинг: 0 / 0
Курсор без транзакции
    #35143325
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zashibis пишет:
> Проблема такая - нужно создать курсор, который бы не зависел от транзакции.

Не бывает такого.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Курсор без транзакции
    #35143767
Фотография Zashibis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ооо! Огромное спасибо!
При добавлении WITH HOLD курсор вообще не зависит от транзакций! Создается, используется и удаляется где угодно. Правда работает капельку медленнее, но это не фатально.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Курсор без транзакции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]