constraint enable,disable的问题解决

作者: admin 分类: Oracle,公众号存档            0 次浏览 发布时间: 2012-10-25 11:15

 

–disable的问题

 

ALTER TABLE EMPLOYEES DISABLE CONSTRAINT EMP_EMP_ID_PK
*
ERROR at line 1:
ORA-02297: cannot disable constraint (HR.EMP_EMP_ID_PK) – dependencies exist


SQL> !oerr ora 02297
02297, 00000,”cannot disable constraint (%s.%s) – dependencies exist”
// *Cause: an alter table disable constraint failed becuase the table has
//      foriegn keys that are dpendent on this constraint.
// *Action: Either disable the foreign key constraints or use disable cascade

SQL> show user     
USER is “HR”
SQL> alter table employees disable constraint EMP_EMP_ID_PK cascade;

Table altered.


SQL> select constraint_name,constraint_type ,status from user_constraints where table_name=’EMPLOYEES’;

CONSTRAINT_NAME                C STATUS
—————————— – ——–
EMP_LAST_NAME_NN               C DISABLED
EMP_EMAIL_NN                   C DISABLED
EMP_HIRE_DATE_NN               C DISABLED
EMP_JOB_NN                     C DISABLED
EMP_SALARY_MIN                 C DISABLED
EMP_EMAIL_UK                   U DISABLED
EMP_EMP_ID_PK                  P DISABLED
EMP_MANAGER_FK                 R DISABLED
EMP_JOB_FK                     R DISABLED
EMP_DEPT_FK                    R DISABLED

10 rows selected.

 

–关于enable的问题

 

SQL>  select constraint_name,constraint_type ,status from user_constraints where table_name=’EMPLOYEES’;

CONSTRAINT_NAME                C STATUS
—————————— – ——–
EMP_LAST_NAME_NN               C ENABLED
EMP_EMAIL_NN                   C ENABLED
EMP_HIRE_DATE_NN               C ENABLED
EMP_JOB_NN                     C ENABLED
EMP_SALARY_MIN                 C ENABLED
EMP_EMAIL_UK                   U DISABLED
EMP_EMP_ID_PK                  P DISABLED
EMP_MANAGER_FK                 R DISABLED
EMP_JOB_FK                     R ENABLED
EMP_DEPT_FK                    R ENABLED

10 rows selected.

 

 

SQL> ALTER TABLE EMPLOYEES ENABLE CONSTRAINT EMP_EMP_ID_PK ;
ALTER TABLE EMPLOYEES ENABLE CONSTRAINT EMP_EMP_ID_PK
*
ERROR at line 1:
ORA-14063: Unusable index exists on unique/primary constraint key


SQL> !oerr ora 14063
14063, 00000, “Unusable index exists on unique/primary constraint key”
// *Cause:  User attempted to add or enable a primary key/unique constraint
//          on column(s) of a table on which there exists an index marked
//          Index Unusable.
// *Action: Drop the existing index or rebuild it using ALTER INDEX REBUILD

SQL> select index_name from user_indexes where table_name=’EMPLOYEES’;

INDEX_NAME
——————————
EMP_EMAIL_UK
EMP_EMP_ID_PK
EMP_DEPARTMENT_IX
EMP_JOB_IX
EMP_MANAGER_IX
EMP_NAME_IX

6 rows selected.

 

SQL> ALTER INDEX EMP_EMP_ID_PK REBUILD;

Index altered.

SQL> ALTER TABLE EMPLOYEES ENABLE CONSTRAINT EMP_EMP_ID_PK;

Table altered.


📌 本文来自作者的 ITPUB 技术博客存档(2012 年),原文链接:https://blog.itpub.net/23718752/viewspace-747180/

admin

杨建荣,《Oracle DBA工作笔记》《MySQL DBA工作笔记》作者,dbaplus社群发起人之一,腾讯云TVP,现任竞技世界系统部经理,拥有十多年数据库开发和运维经验,目前专注于开源技术、运维自动化和性能调优

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注