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

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

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


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