除了删除并重新创建表之外,是否还有其他方法可以修改表上的现有检查约束?
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
5条答案
按热度按时间lb3vh1jj1#
您必须删除它并重新创建它,但如果您不想这样做,则不必承担重新验证数据的成本。
enable novalidate
子句将强制插入或更新强制执行约束,但不会强制对表进行全表扫描以验证所有行是否符合。9gm1akwq2#
首先创建新约束,然后删除旧约束。
这样,您可以确保:
kulphzqa3#
不,你不能用别的方法做这件事。
mwg9r5ms4#
没有。如果这样的特性存在,它会在这个语法说明中列出。(尽管可能有一个未记录的SQL特性,或者可能有一些我不知道的包。)
ddhy6vgd5#