Trik untuk jsonb_set()
apakah itu memodifikasi bagian dari jsonb
objek, tetapi mengembalikan seluruh objek. Jadi Anda memberikan nilai kolom saat ini dan jalur yang ingin Anda ubah ("halaman" di sini, sebagai larik string), lalu Anda mengambil larik yang ada (my_column->'pages'
) dan tambahkan ||
objek baru untuk itu. Semua bagian lain dari jsonb
objek tetap seperti apa adanya. Anda secara efektif menetapkan objek yang sama sekali baru ke kolom tetapi itu tidak relevan karena UPDATE
tetap menulis baris baru ke tabel fisik.
UPDATE my_table
SET my_column = jsonb_set(my_column, '{pages}', my_column->'pages' || new_json, true);
Opsi create_missing
parameter disetel ke true
di sini tambahkan objek "halaman" jika belum ada.