0

パーティション分割しているマスターテーブルがあります。フィールドの1つが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 に答える