【发布时间】:2012-06-15 06:51:30
【问题描述】:
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 上的触发器。
【问题讨论】:
标签: sql json postgresql