mycolumn
是jsonb類型與空陣列的默認值。的毗連目的是數組,如果對象不離開
我想更新這個數組,如果新的值不存在。
選擇查詢:
SELECT mycolumn FROM mytable WHERE id = 1;
回報:[]
更新查詢:
UPDATE mytable SET mycolumn = mycolumn || '[{"foo":"bar"}]' WHERE id = 1;
選擇回報:[{"foo":"bar"}]
如果更新查詢運行超過一次,它會將值附加到數組中。
運行更新再次,選擇返回[{"foo":"bar"},{"foo":"bar"}]
等
是否有更新mycolumn
數組值的冪等方法?
應該發生什麼,如果'mycolumn'已經擁有多個數組元素?是否應該在所有元素中替換一個解決方案,即在第一個中,還是在第一個中已經擁有這樣的密鑰? – pozs
@pozs在我的使用情況下,數組應該只有唯一的對象,並沒有重複。如果更新發生在要插入的新對象退出到數組中,則不會發生任何事情。換句話說,更新應該是疊加的,因爲該對象不存在於數組中,否則noop。 – todgru
所以,也不會「更新」(修改)在陣列中的現有對象在任何可能的情況下?你想找到一種方法來添加對象,如果它不存在,然後什麼都不做?如果對象「部分」存在,會發生什麼?即原始值:'[{「a」:「b」,「c」:「d」},{「e」:「f」}]'並且您想要「插入」f.ex. '{ 「一」: 「B」}'? - 或 來回:'[{「a」:「b」},{「e」:「f」}]'和'{「a」:「b」,「c」:「d」} '? – pozs