根据Postgres文档,您可以按以下方式向hstore列添加键:
但似乎只有在hstore字段不为空的情况下才起作用。例如:
更新成功,但是hstore没有被更新。然而:
有没有一种方法可以在不先检查hstore是否为空的情况下原子地添加一个键到hstore中?
UPDATE tab SET h = h || ('c' => '3');
但似乎只有在hstore字段不为空的情况下才起作用。例如:
postgres=# create table htest (t text, h hstore);
CREATE TABLE
postgres=# insert into htest (t) VALUES ('key');
INSERT 0 1
postgres=# update htest set h = h || ('foo'=>'bar') where t='key';
UPDATE 1
postgres=# select * from htest;
t | h
-----+---
key |
(1 row)
更新成功,但是hstore没有被更新。然而:
postgres=# update htest set h = ('foo'=>'bar') where t='key';
UPDATE 1
postgres=# select * from htest;
t | h
-----+--------------
key | "foo"=>"bar"
(1 row)
postgres=# update htest set h = h || ('bar'=>'foo') where t='key';
UPDATE 1
postgres=# select * from htest;
t | h
-----+----------------------------
key | "bar"=>"foo", "foo"=>"bar"
(1 row)
有没有一种方法可以在不先检查hstore是否为空的情况下原子地添加一个键到hstore中?