1. ホーム
  2. oracle

[解決済み] 既存のチェック制約を修正するには?

2023-06-28 23:31:04

質問

テーブル上の既存のチェック制約を修正する方法はありますか? を削除して再作成する以外の方法はありますか? ?

create table t ( n number);
ora10g> Tabelle wurde erstellt.

ora10g> alter table t add constraint ck check(n>0);

Tabelle wurde geõndert.

ora10g> alter table t modify constraint ck check(n<0);
alter table t modify constraint ck check(n<0)
                                   *
FEHLER in Zeile 1:
ORA-00933: SQL-Befehl wurde nicht korrekt beendet

どのように解決するのですか?

一旦落として作り直す必要がありますが、データの再検証をしたくない場合は、そのコストをかける必要はありません。

alter table t drop constraint ck ;
alter table t add constraint ck check (n < 0) enable novalidate;

enable novalidate 節は、挿入や更新に制約を強制しますが、テーブルに対してフルテーブルスキャンを行い、すべての行が制約に従うかどうかを確認することはありません。