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

2.3.244 親テーブルにPRIMARY KEY制約を追加する場合の動作変更

非互換

FUJITSU Enterprise Postgres 10では、親テーブルにPRIMARY KEY制約を追加し、それに伴い、NOT NULL制約が追加される場合、継承の子テーブルにもNOT NULL制約を追加するよう変更します。

FUJITSU Enterprise Postgres 9.6以前の場合

子テーブルには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
FUJITSU Enterprise Postgres 10以降の場合

子テーブルにも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制約を削除してください。