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