|
|
|
Почему не изменяются только что вставленнаые данные
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. В таблице t происходит вставка, возвращается Id записи (SERIAL PRIMARY KEY) Я хочу чтобы следом проходил update, который менял поле d в таблице frl.rc на значение из таблицы r Почему не получается, не пойму. Может быть потому, что транзакиця еще не завершилась? и "слепок" от таблицы frl.rc используется старый? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2015, 13:37 |
|
||
|
Почему не изменяются только что вставленнаые данные
|
|||
|---|---|---|---|
|
#18+
PCContra, Пока не завершилась транзакция, то другие программы не видят изменений. Например, если Вы в процедуре меняете данные и с помощью notify запускаете работу другой программы, то эта другая программа не видит новые данные пока не закончится выполнение процедуры, то есть не произойдет commit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2015, 13:55 |
|
||
|
Почему не изменяются только что вставленнаые данные
|
|||
|---|---|---|---|
|
#18+
ARTURVPCContra, Пока не завершилась транзакция, то другие программы не видят изменений. Например, если Вы в процедуре меняете данные и с помощью notify запускаете работу другой программы, то эта другая программа не видит новые данные пока не закончится выполнение процедуры, то есть не произойдет commitтут не про "другие программы" а про момент снепшота в много-стейтментном WITH ... RETURNING. Контра, Это нормальное для WITH-полистейтмента поведение -- иметь синхронизированную на момент первого стейтмента видимость всех прочих. (единый снепшот). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2015, 14:00 |
|
||
|
Почему не изменяются только что вставленнаые данные
|
|||
|---|---|---|---|
|
#18+
ээээээКонтра, Это нормальное для WITH-полистейтмента поведение -- иметь синхронизированную на момент первого стейтмента видимость всех прочих. (единый снепшот). Я так понимаю, что update у меня не получится? Т.е. единый снепшот не меняется в процессе выполнения WITH-полистейтмента? И новая строчка в таблице frl.rc мне не доступна для редактирования? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2015, 14:26 |
|
||
|
Почему не изменяются только что вставленнаые данные
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2015, 14:46 |
|
||
|
Почему не изменяются только что вставленнаые данные
|
|||
|---|---|---|---|
|
#18+
PS но вы всё то же самое можете сделать иначе Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2015, 14:51 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38873420&tid=1998190]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
214ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 546ms |

| 0 / 0 |
