229 | | Sposób na zmianę wartości jednego pola w obiekcie typu JSON ('''dla PostgreSQL v9.3+'''): |
230 | | {{{ |
231 | | CREATE OR REPLACE FUNCTION "json_set_value"( |
232 | | "json" json, |
233 | | "key_to_set" TEXT, |
234 | | "value_to_set" anyelement |
235 | | ) |
236 | | RETURNS json |
237 | | LANGUAGE sql |
238 | | IMMUTABLE |
239 | | STRICT |
240 | | AS $function$ |
241 | | SELECT COALESCE( |
242 | | (SELECT ('{' || string_agg(to_json("key") || ':' || "value", ',') || '}') |
243 | | FROM (SELECT * |
244 | | FROM json_each("json") |
245 | | WHERE "key" <> "key_to_set" |
246 | | UNION ALL |
247 | | SELECT "key_to_set", to_json("value_to_set")) AS "fields"), |
248 | | '{}' |
249 | | )::json |
250 | | $function$; |
251 | | |
252 | | UPDATE cregisters.register_field SET params = json_set_value(params, 'doRefresh', true) WHERE id____ = 1; |
253 | | |
254 | | UPDATE cregisters.register_field SET params = json_set_value(params, 'value', 'SQL::SELECT ''tekst "kolo"''') WHERE id____ = 1; |
255 | | }}} |
256 | | |