Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPDATE и JSONB / 4 сообщений из 4, страница 1 из 1
20.07.2019, 08:56
    #39839536
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE и JSONB
Пытаюсь понять насколько аккуратно можно обновлять поля такого типа.
Есть таблица с полем 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}?
...
Рейтинг: 0 / 0
20.07.2019, 08:57
    #39839537
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE и JSONB
последний json следует читать как {"a":1,"b":4}
...
Рейтинг: 0 / 0
20.07.2019, 11:41
    #39839557
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE и JSONB
Troglodit,

нет. Обновляется строка таблицы. Там же и берётся блокировка на обновление таблицы. Вторая транзакция будет ждать завершение первой как раз с целью узнать, какие именно значения считать исходными. Ну и не удалили ли строку вовсе.

PS: для заданного json видимо подразумевался jsonb_set(data, '{a}', '3'::jsonb)
...
Рейтинг: 0 / 0
20.07.2019, 12:37
    #39839568
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE и JSONB
Спасибо за ответ.
Я надеялся, что все так и будет, просто с версионниками раньше не работал, да и работа с JSON пока темный лес, работает с кучей оговорок.
PS. Да конечно вы правы, просто я копировал пример из скрипта с обновлением в массиве.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPDATE и JSONB / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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