powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Временные таблицы - кто - нибудь пользуется?
7 сообщений из 7, страница 1 из 1
Временные таблицы - кто - нибудь пользуется?
    #33302409
mefmsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то я не догоняю логику работы с сабжем...
Грабли классические и здесь уже вроде описанные, но полного решения так и не нашёл.
В процедуре пишем
1. create temporary table tst ... on commit drop
2. select * from tst ....
Не работает при повторном вызове :( - Relation with OID 12345 отсутствует в базе.

В процедуре пишем
1.execute 'create temporary table tst ...'
2. execute 'select * from tst ....' - Работает :)

Ясно, что на момент компиляции имена транслируются в OID и сохраняются в недрах ядра. А как тогда делать select into my_var any_field from tst?
Или for rec in select * from tst loop?
Если этого вообще нельзя делать, то зачем тогда временные таблицы?
Может кто -то умеет их правильно применять?
...
Рейтинг: 0 / 0
Временные таблицы - кто - нибудь пользуется?
    #33302883
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mefmskЧто-то я не догоняю логику работы с сабжем...
Грабли классические и здесь уже вроде описанные, но полного решения так и не нашёл.
В процедуре пишем
1. create temporary table tst ... on commit drop
2. select * from tst ....
Не работает при повторном вызове :( - Relation with OID 12345 отсутствует в базе.

В процедуре пишем
1.execute 'create temporary table tst ...'
2. execute 'select * from tst ....' - Работает :)

Ясно, что на момент компиляции имена транслируются в OID и сохраняются в недрах ядра. А как тогда делать select into my_var any_field from tst?
Или for rec in select * from tst loop?
Если этого вообще нельзя делать, то зачем тогда временные таблицы?
Может кто -то умеет их правильно применять?
Я, например, решаю задачу ведения лога через времянку.
Т.е. сразу после подсоединения создаю временную таблицу,заношу туда ID пользователя, а потом ею пользуюсь во всех триггерах.
...
Рейтинг: 0 / 0
Временные таблицы - кто - нибудь пользуется?
    #33303209
Фотография mef
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey Daeron
Я, например, решаю задачу ведения лога через времянку.
Т.е. сразу после подсоединения создаю временную таблицу,заношу туда ID пользователя, а потом ею пользуюсь во всех триггерах.

Правильно, у меня тоже примерно так и работает, только описанная ошибка возникает, если ф-ю вызвать дважды внутри одного коннекта:

Connect
exec Function_test
exec Function_test
Finish

Если делать
Connect
exec Function_test
Finish
Connect
exec Function_test
Finish
То всё прокатывает, но каждый раз переконнекчиваться как-то неправильно ИМХО...
...
Рейтинг: 0 / 0
Временные таблицы - кто - нибудь пользуется?
    #33303334
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта баго-фича обсуждалась уже.
Фишка в том, что в процедуре вместо имён юзаются ОИДы. Когда создаётся временная таблица, ей присваивается ОИД, и он используется в операторах. Когда процедура вызывается второй раз, то юзается старый план, а там естесно старый ОИД, тот которого уже нет.
...
Рейтинг: 0 / 0
Временные таблицы - кто - нибудь пользуется?
    #33303828
Фотография mef
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так это можно обойти как - то?
Например, план насильно обновить? Это же явный баг по - моему
...
Рейтинг: 0 / 0
Временные таблицы - кто - нибудь пользуется?
    #33303894
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Временные таблицы - кто - нибудь пользуется?
    #33303934
Фотография mef
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, хоть так может работать будет...
for my_rec in execute "..." loop
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Временные таблицы - кто - нибудь пользуется?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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