postgres 9.2支持json
列。什么是将postgres
扩展为基于json
列自动索引的最佳方式。
例如,
create table obj(
obj_id bigserial primary key,
col1 varchar(20),
col2 date,
obj json
);
create index obj_col1 on obj( col1 );
create index obj_col2 on obj( col2 );
在插入或更新记录时,col1
和col2
是从obj
列设置的。
基本上规则是除了主键和json列本身之外的任何属性都是从json对象自动设置的。
作为相关内容,重命名col1
也会更新json
属性,并将col1
重命名为新名称。
可以使用catalogue
和execute
语句完成,但会因为罪而缓慢。
可以通过为每个表创建触发器来完成,但这既乏味又容易出错。
无法通过继承来完成,因为无法继承触发器。
是extension
最好的方式吗?它甚至会是什么样子?
最终无法写extension
来执行此操作,因为pg不支持CREATE TABLE或ALTER TABLE上的触发器。
对于kludge的唯一建议是登录DDL,监视日志,然后运行一个过程。虽然可以这样做,但我们真正需要的是CREATE和ALTER TABLE上的触发器。
答案 0 :(得分:1)
我不清楚你是如何从你的json派生“col1”的。据推测,这取决于你的json。
无论如何 - 最好的方法是编写一个为您编写触发器的脚本,以及另一个为您编写列重命名操作的脚本。你提供任何必要的参数,并吐出plpgsql代码。
哦 - 你可能会发现http://pgtap.org/也很有用 - 你会想要测试这一切。