0

我有一个正在分区的主表。一切都很好,除了其中一个字段是 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 密钥?

4

1 回答 1

1

您忘记了CHECK约束上的括号。我会使用完整的CONSTRAINT语法:

CREATE TABLE partition_field1 
(
  CONSTRAINT data_field_equals_1 CHECK (data->'field' = 1)
) INHERITS ( master_table );
于 2013-06-22T01:48:47.743 回答