非互換
FUJITSU Enterprise Postgres 13では、「CREATE TABLE LIKE」より作成したテーブルにCHECK制約の「NO INHERIT」プロパティを伝播するように変更します。
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)
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」を指定してテーブルを作成します。テーブルを作成した後、チェック制約を個別に追加してください。