繁体   English   中英

无法删除约束 - 不存在的约束

[英]Cannot drop constraint - nonexistent constraint

我试图在我的表中删除约束,如 fk 和 pk 但它会引发错误。

无法删除约束 - 不存在的约束

但是当我检查是否有约束时,它表明有一个约束,但仍然不工作。

select column_name,constraint_name from user_cons_columns where table_name='EMP';

COLUMN_NAME CONSTRAINT_NAME
------------------------------
EMPNO       PK_EMP
DEPTNO      FK_DEPTNO


alter table emp drop constraint deptno;

第 1 行出现错误:ORA-02443:无法删除约束 - 不存在约束

尝试这个:

ALTER TABLE EMP DROP CONSTRAINT FK_DEPTNO;
alter table emp drop constraint fk_deptno;

该语法需要具有外键和约束名称的表。 在多次遇到同一个问题后,我尝试同时调用两者以确保我不会意外调用错误的表。

更改 [NameOfTable] 删除约束 [NameOfConstraint]

当您尝试在子表中删除约束但它实际上存在于父表中时,就会发生这种情况。 这就是为什么你会看到不存在的约束。 将您带到所需表的查询如下:

select TABLE_NAME from dba_cons_columns where CONSTRAINT_NAME='constraint_name';
# result
TABLE_NAME
------------------------------
table_name

现在您从结果表中禁用/删除该约束。

ALTER TABLE table_name DISABLE CONSTRAINT constraint_name;
# Table altered.
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
# Table altered.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM