ページの先頭行へ戻る
Enterprise Postgres 17 リリース情報

2.2.214 CHECK制約の「NO INHERIT」プロパティを伝播するように変更

非互換

FUJITSU Enterprise Postgres 13では、「CREATE TABLE LIKE」より作成したテーブルにCHECK制約の「NO INHERIT」プロパティを伝播するように変更します。

FUJITSU Enterprise Postgres 12以前の場合

CHECK制約の「NO INHERIT」プロパティが伝播されません。

[例]

=# CREATE TABLE noinh_con_copy (a int CHECK (a > 0) NO INHERIT);
CREATE TABLE
=# CREATE TABLE noinh_con_copy1 (LIKE noinh_con_copy INCLUDING CONSTRAINTS);
CREATE TABLE
=# \d noinh_con_copy1
          Table "public.noinh_con_copy1"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 a      | integer |           |          |
Check constraints:
    "noinh_con_copy_a_check" CHECK (a > 0)
FUJITSU Enterprise Postgres 13の場合

CHECK制約の「NO INHERIT」プロパティが伝播されます。

[例]

=# CREATE TABLE noinh_con_copy (a int CHECK (a > 0) NO INHERIT);
CREATE TABLE
=# CREATE TABLE noinh_con_copy1 (LIKE noinh_con_copy INCLUDING CONSTRAINTS);
CREATE TABLE
=# \d noinh_con_copy1
          Table "public.noinh_con_copy1"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 a      | integer |           |          |
Check constraints:
    "noinh_con_copy_a_check" CHECK (a > 0) NO INHERIT

対処方法

必要に応じて、LIKE文で「INCLUDING CONSTRAINTS」を指定せず、「EXCLUDING CONSTRAINTS」を指定してテーブルを作成します。テーブルを作成した後、チェック制約を個別に追加してください。