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;