Oracle ORA-01758: 必須列(NOT NULL)を追加するには、表を空にする必要があります対処方法

環境
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0
SQL*Plus: Release 12.2.0.1.0

現象
「ALTER TABLE テーブル名 ADD カラム名 型 NOT NULL」を実行する際に「ORA-01758: 必須列(NOT NULL)を追加するには、表を空にする」
が出力されます。

SQL構文

ALTER TABLE USER_TBL ADD (
  DEPNO NUMBER(4,0) null,
  CREATEDATE DATE not null,
}

解決対策
(1).データをすべて削除してから、実行し直す。
(2).NOT NULL 制約なしでカラムを追加し、データを設定した後に、NOT NULL 制約を追加する。

操作例
1.カラム「CREATEDATE 」制約なしを追加します。

ALTER TABLE USER_TBL ADD (
   DEPNO NUMBER(4,0) null,
   CREATEDATE DATE null,
}

2.カラム「CREATEDATE」にデータを設定します

UPDATE USER_TBL SET CREATEDATE='2022/11/16';

3.カラム「CREATEDATE」にNOT NULL制約を追加します

ALTER TABLE USER_TBL MODIFY CREATEDATE NOT NULL;

 

Oracle

Posted by arkgame