Как обновить данные таблицы json поля с другим (вводом) json с помощью общих идентификаторов формы ввода json и поля json и проверить каждое из них (postgresql)? - PullRequest
0 голосов
/ 27 мая 2020

Буду очень признателен за вашу помощь! У меня недостаточно знаний в этой предметной области. У меня есть таблица «Пользователь» с полем «данные» JSON внутри. Это поле «данные» содержит информацию о пользовательских купонах. Запись купона - это идентификатор и сумма купона. Например: { "Coupons" : {"1": 10, "2": 5, "3": 3}}

Я хочу потратить несколько купонов, забрав их у пользователя. У меня есть JSON '{"1": 8, "2": 4}' с идентификаторами купонов и суммой для вычитания. В моем случае я хотел бы написать запрос SQL как ОДНУ транзакцию, чтобы изменить количество пользовательских купонов с этими данными. Но я должен проверить, есть ли у пользователя купоны с каждым из идентификаторов и достаточно ли у пользователя их количества. После этого мне нужно вычесть сумму купонов и записать новые данные в поле User JSON data. Я имею в виду обновить сумму купонов. В ВОЗВРАЩЕНИИ я хотел бы получить данные о пользовательских купонах, которые были изменены. Если у пользователя нет купона или суммы недостаточно, я должен пропустить вычитание этого купона.

Извините, если запутался, но это моя задача, которую я не могу решить: (

У меня есть одно плохое решение:

UPDATE avz_user SET data = jsonb_set(data, '{"Coupons"}', data->'Coupons' || '{"1": 8, "2": 4}') WHERE id = 1;

Это если я хочу заменить поля в исходных данных JSON. Это не решение и слишком просто :)

Спасибо за заранее! За любой помощью ...

...