Sztuczka do jsonb_set()
jest to, że modyfikuje część jsonb
obiekt, ale zwraca cały obiekt. Więc przekazujesz mu bieżącą wartość kolumny i ścieżkę, którą chcesz zmodyfikować (tutaj "strony", jako tablicę ciągów), a następnie bierzesz istniejącą tablicę (my_column->'pages'
) i dołącz ||
nowy obiekt do niego. Wszystkie inne części jsonb
obiekt pozostają takie, jakie były. Efektywnie przypisujesz zupełnie nowy obiekt do kolumny, ale jest to nieistotne, ponieważ UPDATE
i tak zapisuje nowy wiersz do tabeli fizycznej.
UPDATE my_table
SET my_column = jsonb_set(my_column, '{pages}', my_column->'pages' || new_json, true);
Opcjonalny create_missing
parametr ustawiony na true
tutaj dodaje obiekt "strony", jeśli jeszcze nie istnieje.