我有一个我正在分区的主表。一切都很好,除了其中一个字段是一个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密钥吗?
答案 0 :(得分:1)
你忘记了CHECK
约束上的parens。我会使用完整的CONSTRAINT
语法:
CREATE TABLE partition_field1
(
CONSTRAINT data_field_equals_1 CHECK (data->'field' = 1)
) INHERITS ( master_table );