powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Почему не изменяются только что вставленнаые данные
7 сообщений из 7, страница 1 из 1
Почему не изменяются только что вставленнаые данные
    #38873336
PCContra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
WITH r(d) AS (SELECT 'some text'::TEXT),
t(rcnum) AS (INSERT INTO frl.rc (d) VALUES ('') RETURNING id)
UPDATE frl.rc a SET d=r.d FROM r, t WHERE a.rcnum=t.rcnum RETURNING *



В таблице t происходит вставка, возвращается Id записи (SERIAL PRIMARY KEY)
Я хочу чтобы следом проходил update, который менял поле d в таблице frl.rc на значение из таблицы r

Почему не получается, не пойму. Может быть потому, что транзакиця еще не завершилась? и "слепок" от таблицы frl.rc используется старый?
...
Рейтинг: 0 / 0
Почему не изменяются только что вставленнаые данные
    #38873350
ARTURV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PCContra,

Пока не завершилась транзакция, то другие программы не видят изменений.
Например, если Вы в процедуре меняете данные и с помощью notify запускаете работу другой программы, то эта другая программа не видит новые данные пока не закончится выполнение процедуры, то есть не произойдет commit
...
Рейтинг: 0 / 0
Почему не изменяются только что вставленнаые данные
    #38873360
ээээээ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ARTURVPCContra,

Пока не завершилась транзакция, то другие программы не видят изменений.
Например, если Вы в процедуре меняете данные и с помощью notify запускаете работу другой программы, то эта другая программа не видит новые данные пока не закончится выполнение процедуры, то есть не произойдет commitтут не про "другие программы" а про момент снепшота в много-стейтментном WITH ... RETURNING.

Контра, Это нормальное для WITH-полистейтмента поведение -- иметь синхронизированную на момент первого стейтмента видимость всех прочих. (единый снепшот).
...
Рейтинг: 0 / 0
Почему не изменяются только что вставленнаые данные
    #38873402
PCContra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ээээээКонтра, Это нормальное для WITH-полистейтмента поведение -- иметь синхронизированную на момент первого стейтмента видимость всех прочих. (единый снепшот).
Я так понимаю, что update у меня не получится? Т.е. единый снепшот не меняется в процессе выполнения WITH-полистейтмента? И новая строчка в таблице frl.rc мне не доступна для редактирования?
...
Рейтинг: 0 / 0
Почему не изменяются только что вставленнаые данные
    #38873420
ээээээ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PCContraээээээКонтра, Это нормальное для WITH-полистейтмента поведение -- иметь синхронизированную на момент первого стейтмента видимость всех прочих. (единый снепшот).
Я так понимаю, что update у меня не получится? Т.е. единый снепшот не меняется в процессе выполнения WITH-полистейтмента? И новая строчка в таблице frl.rc мне не доступна для редактирования?
апдейт только что вставленного -- не получится, имхо (вы не увидите этих строк никак) -- а апдейт единожды проапдейченного -- вполне (но "олд-велью" в них будут неактуальными, а из снепшота).

http://www.postgresql.org/docs/9.3/static/queries-with.html

RTFMAll the statements are executed with the same snapshot (see Chapter 13), so they cannot "see" each others' effects on the target tables.
...
Рейтинг: 0 / 0
Почему не изменяются только что вставленнаые данные
    #38873429
ээээээ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PS но вы всё то же самое можете сделать иначе

Код: sql
1.
2.
3.
4.
5.
6.
....
,ins AS -- вместо инсерта
(SELECT .... )
,upd AS --вместо апдейта
(SELECT F{ins.vals, delta}.... FROM ins )
,real_ins AS (INSERT ..... FROM upd RETURNING) -- собственно insert
...
Рейтинг: 0 / 0
Почему не изменяются только что вставленнаые данные
    #38873435
PCContra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, эээээ!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Почему не изменяются только что вставленнаые данные
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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