sql >> Database >  >> RDS >> PostgreSQL

Een JSON-object naar een geneste array in een JSONB-kolom pushen

De truc om jsonb_set() is dat het een deel van een jsonb . wijzigt object, maar het retourneert het hele object. Dus je geeft het de huidige waarde van de kolom en het pad dat je wilt wijzigen ("pagina's" hier, als een stringarray), dan neem je de bestaande array (my_column->'pages' ) en voeg || . toe het nieuwe object ervoor. Alle andere delen van de jsonb object blijven zoals het was. U wijst in feite een geheel nieuw object toe aan de kolom, maar dat is niet relevant omdat een UPDATE schrijft toch een nieuwe rij naar de fysieke tabel.

UPDATE my_table
SET my_column = jsonb_set(my_column, '{pages}', my_column->'pages' || new_json, true);

De optionele create_missing parameter ingesteld op true hier voegt het object "pages" toe als het nog niet bestaat.




  1. Hoe stel je een maximale uitvoeringstijd in voor een mysql-query?

  2. Hoe kan ik dode verbindingen opschonen met Oracle?

  3. Logboekregistratie inschakelen voor SQL-instructies bij gebruik van JDBC

  4. SQL Server:Dynamische waar-clausule