1

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并且col2obj列中设置。

本质上,规则是除了主键和 json 列本身之外的任何属性都是从 json 对象自动设置的。

作为关联,重命名col1也会更新json属性,将col1那里重命名为新名称。

可以使用catalogueandexecute语句来完成,但会像罪恶一样缓慢。

可以通过为每个表创建触发器来完成,但这既乏味又容易出错。

不能通过继承来实现,因为触发器不能被继承。

extension最好的方法吗?它甚至会是什么样子?


最终无法写入extension执行此操作,因为 pg 不支持 CREATE TABLE 或 ALTER TABLE 上的触发器。

对 kludge 的唯一建议是为 DDL 记录日志,监视日志,然后运行一个过程。虽然可以做到这一点,但我们真正需要的是 CREATE 和 ALTER TABLE 上的触发器。

4

1 回答 1

1

我不清楚你是如何从你的 json 导出“col1”的。大概这取决于你的json。

无论如何 - 最好的方法是编写一个脚本为您编写触发器,另一个为您编写列重命名操作。您提供任何必要的参数,它会输出 plpgsql 代码。

哦 - 你可能会发现http://pgtap.org/也很有用 - 你会想要测试这一切。

于 2012-06-15T07:32:04.710 回答