是否有任何方法来修改表上的现有检查约束
除了删除和重新创建它吗?
除了删除和重新创建它吗?
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子句将强制插入或更新强制执行约束,但不会强制对表进行全表扫描以验证所有行是否符合。