Буду очень признателен за вашу помощь! У меня недостаточно знаний в этой предметной области. У меня есть таблица «Пользователь» с полем «данные» 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. Это не решение и слишком просто :)
Спасибо за заранее! За любой помощью ...