【问题标题】:Setting default value for a json column为 json 列设置默认值
【发布时间】:2014-10-22 22:16:42
【问题描述】:
我正在研究使用 Postgres 通过 activerecords 将 json 设置为列的功能json handling features 我想知道如何在创建 {name: '', other_name: ''} 之类的表时给它一个默认值等等...
我还想了解如何为列创建默认 json 值,如上面的示例,然后我填写值,但在其他时间将其重置为“默认”如何看起来会这样。
【问题讨论】:
标签:
ruby-on-rails
json
postgresql
activerecord
【解决方案1】:
它就像任何其他默认值一样,一旦你修复了 json 语法:
CREATE TABLE mytable (
someothercol integer,
somecol json DEFAULT '{"name": "", "other_name": ""}'
);
如果您设置为DEFAULT,它就是这样做的:
regress=> INSERT INTO mytable(someothercol, somecol) VALUES (42, '{"nondefault": 1}');
INSERT 0 1
regress=> SELECT * FROM mytable;
someothercol | somecol
--------------+-------------------
42 | {"nondefault": 1}
(1 row)
regress=> UPDATE mytable SET somecol = DEFAULT WHERE someothercol = 42;
UPDATE 1
regress=> SELECT * FROM mytable;
someothercol | somecol
--------------+--------------------------------
42 | {"name": "", "other_name": ""}
(1 row)