truncate一张表,报ORA-02266错误。
SQL> truncate table WRM$_DATABASE_INSTANCE; truncate table WRM$_DATABASE_INSTANCE * ERROR at line 1: ORA-02266: unique/primary keys in table referenced by enabled foreign keys
禁止主键,执行truncate语句清除表WRM$_DATABASE_INSTANCE内容
SQL> alter table WRM$_DATABASE_INSTANCE disable primary key; alter table WRM$_DATABASE_INSTANCE disable primary key * ERROR at line 1: ORA-02297: cannot disable constraint (SYS.WRM$_DATABASE_INSTANCE_PK) - dependencies exist SQL> alter table WRM$_DATABASE_INSTANCE disable primary key cascade; Table altered. SQL> truncate table WRM$_DATABASE_INSTANCE; Table altered. SQL> alter table WRM$_DATABASE_INSTANCE enable primary key;
note1:
[oracle@server ~]$ 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
note2:
使用cascade参数同时将disable子表的外键;那么在enble父表主键时,同时需要enble子表外键。
当enable子表的外键时,可能存在如下报错
SQL> ALTER TABLE WRM$_SNAPSHOT ENABLE CONSTRAINT WRM$_SNAPSHOT_FK;
ALTER TABLE WRM$_SNAPSHOT ENABLE CONSTRAINT WRM$_SNAPSHOT_FK
*
ERROR at line 1:
ORA-02298: cannot validate (SYS.WRM$_SNAPSHOT_FK) - parent keys not found
未找到父项关键字所以报错,删除主表中多余数据,保证主表与子表一致然后enable外键。