|
UPDATE и JSONB
|
|||
---|---|---|---|
#18+
Пытаюсь понять насколько аккуратно можно обновлять поля такого типа. Есть таблица с полем JSONB. Одно из значений: {"a":1,"b":2} есть 2 updat'а update tbl set data=jsonb_set(data,'{a,1}','3'::jsonb) и update tbl set data=jsonb_set(data,'{b,1}','4'::jsonb) Если запросы выполняются от разных 2х пользователей, существует ли вероятность в следствии блокировок получить не ожидаемый результат {"a":3,"b":4}, а например {"a":1,"b":3}? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2019, 08:56 |
|
UPDATE и JSONB
|
|||
---|---|---|---|
#18+
последний json следует читать как {"a":1,"b":4} ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2019, 08:57 |
|
UPDATE и JSONB
|
|||
---|---|---|---|
#18+
Troglodit, нет. Обновляется строка таблицы. Там же и берётся блокировка на обновление таблицы. Вторая транзакция будет ждать завершение первой как раз с целью узнать, какие именно значения считать исходными. Ну и не удалили ли строку вовсе. PS: для заданного json видимо подразумевался jsonb_set(data, '{a}', '3'::jsonb) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2019, 11:41 |
|
UPDATE и JSONB
|
|||
---|---|---|---|
#18+
Спасибо за ответ. Я надеялся, что все так и будет, просто с версионниками раньше не работал, да и работа с JSON пока темный лес, работает с кучей оговорок. PS. Да конечно вы правы, просто я копировал пример из скрипта с обновлением в массиве. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2019, 12:37 |
|
|
start [/forum/topic.php?desktop=1&fid=53&tid=1995110]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 268ms |
total: | 402ms |
0 / 0 |