设置json列的默认值

时间:2014-10-22 22:16:42

标签: ruby-on-rails json postgresql activerecord

我正在考虑使用Postgres的功能,通过activerecords json handling features将json设置为一列我想知道如何在创建表{name: '', other_name: ''}之类的表格时给它一个默认值等......

我也想了解如何为列创建默认的json值,如上面的示例,然后稍后我填写值,但在其他时间将其重置为"默认"看起来如何。

1 个答案:

答案 0 :(得分:5)

一旦你修复了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)