对hstore字段进行postgresql分区检查

时间:2013-06-22 00:41:33

标签: postgresql database-partitioning hstore

我有一个我正在分区的主表。一切都很好,除了其中一个字段是一个hstore类型,我希望分区创建CHECK检查该hstore密钥的值:

CREATE TABLE master_table 
( 
  id SERIAL, 
  created_at TIMESTAMP WITH TIME ZONE NOT NULL, 
  updated_at TIMESTAMP WITH TIME ZONE NOT NULL, 
  data HSTORE DEFAULT hstore(array[]::varchar[])
);

和分区:

CREATE TABLE partition_field1 
(
  CHECK data->'field' = 1 
) INHERITS ( master_table );

然而,我收到以下错误:

ERROR:  syntax error at or near "data"
LINE 1: CREATE TABLE partition_field1 ( CHECK data->'field...
                                              ^
这可能吗?或者我必须适当地指定hstore密钥吗?

1 个答案:

答案 0 :(得分:1)

你忘记了CHECK约束上的parens。我会使用完整的CONSTRAINT语法:

CREATE TABLE partition_field1 
(
  CONSTRAINT data_field_equals_1 CHECK (data->'field' = 1)
) INHERITS ( master_table );