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 );
插入或更新记录时,将从obj
列设置col1
和col2
。
从本质上讲,规则是除了主键和 JSON 列本身之外,任何属性都是从 JSON 对象自动设置的。
作为相关名称,重命名col1
也会更新json
属性,将col1
重命名为新名称。
可以使用catalogue
和execute
语句来完成,但会像罪恶一样缓慢。
可以通过为每个表创建触发器来完成,但这既乏味又容易出错。
无法通过继承完成,因为触发器无法继承。
extension
是最好的选择吗? 它甚至会是什么样子?
最终无法写入extension
来执行此操作,因为 PG 不支持创建表或更改表上的触发器。
对于 kludge 的唯一建议是 DDL 的日志,监视日志,然后运行一个过程。 虽然这可以做到,但我们真正需要的是 CREATE 和 ALTER TABLE 上的触发器。
我不清楚你是如何从你的 json 中派生"col1"的。大概这取决于您的 json。
无论如何 - 最好的方法是编写一个脚本来为您编写触发器,另一个脚本为您编写列重命名操作。你提供任何必要的参数,它会吐出plpgsql代码。
哦 - 你可能会发现 http://pgtap.org/有用 - 你会想要测试所有这些。