我遇到的问题是当我在Oracle中运行以下命令时,我遇到了错误.
Truncate table mytable;
Run Code Online (Sandbox Code Playgroud)
错误:
ORA-02266: unique/primary keys in table referenced by enabled foreign keys
Run Code Online (Sandbox Code Playgroud)
我发现,这个mytable与其他表有关系.这就是为什么Truncate命令不能继续进行的原因.如何使用Truncate命令使用SQL脚本从myTable中删除数据?
Ric*_*iwi 38
您必须将TRUNCATE语句交换为DELETE语句,速度较慢且已记录,但这是在约束到位时执行此操作的方法.
DELETE mytablename;
Run Code Online (Sandbox Code Playgroud)
或者您可以找到引用相关表的外键并暂时禁用它们.
select 'ALTER TABLE '||TABLE_NAME||' DISABLE CONSTRAINT '||CONSTRAINT_NAME||';'
from user_constraints
where R_CONSTRAINT_NAME='<pk-of-table>';
Run Code Online (Sandbox Code Playgroud)
pk-of-table要截断的表的主键名称在哪里
运行以上查询的输出.完成后,请记住再次启用它们,只需更改DISABLE CONSTRAINT为ENABLE CONSTRAINT
Naj*_*nim 10
此页提供了一个非常好的解决方案......
我在这里从中复制解决方案:
使用任何文本编辑器..只需在您从查询中获得的输出中更改禁用以启用,然后运行它.
select 'alter table '||a.owner||'.'||a.table_name||' disable constraint '||a.constraint_name||';'
from all_constraints a, all_constraints b
where a.constraint_type = 'R' and a.status='ENABLED'
and a.r_constraint_name = b.constraint_name
and a.r_owner = b.owner
and b.table_name = upper('YOUR_TABLE');
Run Code Online (Sandbox Code Playgroud)小智 5
问题:
\n\nError \xe2\x80\x9cORA-02266: unique/primary keys in table referenced by enabled foreign keys\xe2\x80\x9d when trying to truncate a table.\nRun Code Online (Sandbox Code Playgroud)\n\n错误信息:
\n\nSQL> truncate table TABLE_NAME; \n\ntruncate table TABLE_NAME\n *\nERROR at line 1:\nORA-02266: unique/primary keys in table referenced by enabled foreign keys\nRun Code Online (Sandbox Code Playgroud)\n\n解决方案:\n-- 找到引用的外键约束。
\n\n SQL> select 'alter table '||a.owner||'.'||a.table_name||' disable constraint '||a.constraint_name||';'\n 2 from all_constraints a, all_constraints b\n 3 where a.constraint_type = 'R'\n 4 and a.r_constraint_name = b.constraint_name\n 5 and a.r_owner = b.owner\n 6 and b.table_name = 'TABLE_NAME';\n\n 'ALTER TABLE'||A.OWNER||'.'||A.TABLE_NAME||'DISABLE CONSTRAINT'||A.CONSTRAINT_NAME||';'\n ---------------------------------------------------------------------------------------------------------\n alter table SCHEMA_NAME.TABLE_NAME_ATTACHMENT disable constraint CONSTRAINT_NAME; \nalter table SCHEMA_NAME.TABLE_NAME_LOCATION disable constraint CONSTRAINT_NAME;\nRun Code Online (Sandbox Code Playgroud)\n\n-- 禁用它们
\n\nalter table SCHEMA_NAME.TABLE_NAME_ATTACHMENT disable constraint CONSTRAINT_NAME;\nalter table SCHEMA_NAME.TABLE_NAME_LOCATION disable constraint CONSTRAINT_NAME;\nRun Code Online (Sandbox Code Playgroud)\n\n-- 运行截断
\n\nSQL> truncate table TABLE_NAME;\n\nTable truncated.\nRun Code Online (Sandbox Code Playgroud)\n\n-- 重新启用外键
\n\n SQL> select 'alter table '||a.owner||'.'||a.table_name||' enable constraint '||a.constraint_name||';'\n 2 from all_constraints a, all_constraints b\n 3 where a.constraint_type = 'R'\n 4 and a.r_constraint_name = b.constraint_name\n 5 and a.r_owner = b.owner\n 6 and b.table_name = 'TABLE_NAME';\n\n'ALTER TABLE'||A.OWNER||'.'||A.TABLE_NAME||'ENABLE CONSTRAINT'||A.CONSTRAINT_NAME||';'\n--------------------------------------------------------------------------------\n\nalter table SCHEMA_NAME.TABLE_NAME_ATTACHMENT enable constraint CONSTRAINT_NAME;\nalter table SCHEMA_NAME.TABLE_NAME_LOCATION enable constraint CONSTRAINT_NAME;\nRun Code Online (Sandbox Code Playgroud)\n\n-- 启用它们
\n\nalter table SCHEMA_NAME.TABLE_NAME_ATTACHMENT enable constraint CONSTRAINT_NAME;\nalter table SCHEMA_NAME.TABLE_NAME_LOCATION enable constraint CONSTRAINT_NAME;\nRun Code Online (Sandbox Code Playgroud)\n