문제에 적용되는 외래 키 제약 조건이있을 때이 문장은 실제로 작동합니다
Error “ORA-02266: unique/primary keys in table referenced by enabled foreign keys” when trying to truncate a table.
오류 메시지 :
SQL> truncate table TABLE_NAME;
truncate table TABLE_NAME
*
ERROR at line 1:
ORA-02266: unique/primary keys in table referenced by enabled foreign keys
가
해결책 : - 참조 된 외래 키 제약 조건을 찾습니다.
SQL> select 'alter table '||a.owner||'.'||a.table_name||' disable constraint '||a.constraint_name||';'
2 from all_constraints a, all_constraints b
3 where a.constraint_type = 'R'
4 and a.r_constraint_name = b.constraint_name
5 and a.r_owner = b.owner
6 and b.table_name = 'TABLE_NAME';
'ALTER TABLE'||A.OWNER||'.'||A.TABLE_NAME||'DISABLE CONSTRAINT'||A.CONSTRAINT_NAME||';'
---------------------------------------------------------------------------------------------------------
alter table SCHEMA_NAME.TABLE_NAME_ATTACHMENT disable constraint CONSTRAINT_NAME;
alter table SCHEMA_NAME.TABLE_NAME_LOCATION disable constraint CONSTRAINT_NAME;
- 그들에게
alter table SCHEMA_NAME.TABLE_NAME_ATTACHMENT disable constraint CONSTRAINT_NAME;
alter table SCHEMA_NAME.TABLE_NAME_LOCATION disable constraint CONSTRAINT_NAME;
을 해제 -
SQL> truncate table TABLE_NAME;
Table truncated.
잘라야 실행 -
SQL> select 'alter table '||a.owner||'.'||a.table_name||' enable constraint '||a.constraint_name||';'
2 from all_constraints a, all_constraints b
3 where a.constraint_type = 'R'
4 and a.r_constraint_name = b.constraint_name
5 and a.r_owner = b.owner
6 and b.table_name = 'TABLE_NAME';
'ALTER TABLE'||A.OWNER||'.'||A.TABLE_NAME||'ENABLE CONSTRAINT'||A.CONSTRAINT_NAME||';'
--------------------------------------------------------------------------------
alter table SCHEMA_NAME.TABLE_NAME_ATTACHMENT enable constraint CONSTRAINT_NAME;
alter table SCHEMA_NAME.TABLE_NAME_LOCATION enable constraint CONSTRAINT_NAME;
다시 외래 키 사용 - 그들에게
사용
alter table SCHEMA_NAME.TABLE_NAME_ATTACHMENT enable constraint CONSTRAINT_NAME;
alter table SCHEMA_NAME.TABLE_NAME_LOCATION enable constraint CONSTRAINT_NAME;
이 테이블에는 100 만 개가 넘는 레코드가 있으며 삭제를 사용하면 속도가 느려질 수 있으므로 Delete 문을 사용할 수 없습니다. – ppshein
레코드가 1 백만 개가 있다면 잘라내기를 수행하기 전에 연결된 모든 하위 레코드를 제거한다고 가정합니다. – RichardTheKiwi
제약 조건을 해제 할 때 cyberkiwi의 옵션을 따를 것입니다. 이 방법을 사용하면 제약 조건을 삭제하지 않습니다. 이 기사에서 http://psoug.org/reference/truncate.html –