非互換
FUJITSU Enterprise Postgres 10では、親テーブルにPRIMARY KEY制約を追加し、それに伴い、NOT NULL制約が追加される場合、継承の子テーブルにもNOT NULL制約を追加するよう変更します。
子テーブルにはNOT NULL制約を追加しません。
[例]
=# CREATE TABLE t1(c1 int, c2 int not null); CREATE TABLE =# CREATE TABLE t2(c3 int) INHERITS(t1); CREATE TABLE =# ALTER TABLE t1 ADD PRIMARY KEY(c1); ALTER TABLE db=# \d t2 テーブル "public.t2" 列 | 型 | 修飾語 ----+---------+---------- c1 | integer | c2 | integer | not null c3 | integer | 継承: t1
子テーブルにもNOT NULL制約を追加します。
[例]
db=# CREATE TABLE t1(c1 int, c2 int not null); CREATE TABLE db=# CREATE TABLE t2(c3 int) INHERITS(t1); CREATE TABLE db=# ALTER TABLE t1 ADD PRIMARY KEY(c1); ALTER TABLE db=# \d t2 テーブル "public.t2" 列 | 型 | 照合順序 | Null 値を許容 | デフォルト ----+---------+----------+---------------+------------ c1 | integer | | not null | c2 | integer | | not null | c3 | integer | | | 継承元: t1
対処方法
子テーブルにNOT NULL制約を付与したくない場合は、ALTER TABLEでNOT NULL制約を削除してください。