清除oracl中有主外键关联的表中的部分数据。
2014-07-02 12:09
141 查看
1.禁用主外键
BEGIN
for c in (select 'ALTER TABLE '||TABLE_NAME||' DISABLE CONSTRAINT '||constraint_name||' ' as v_sql from user_constraints where CONSTRAINT_TYPE='R') loop
EXECUTE IMMEDIATE c.v_sql;
end loop;
end;
2.清空数据源。清空所有数据。一般情况是对表进行条件删除。
begin
for ec in
(select table_name from user_tables)
loop
execute immediate 'delete '|| ec.table_name;
end loop;
end;
commit;
3.启动主外键:
BEGIN
for c in (select 'ALTER TABLE '||TABLE_NAME||' ENABLE CONSTRAINT '||constraint_name||' ' as v_sql from user_constraints where CONSTRAINT_TYPE='R') loop
EXECUTE IMMEDIATE c.v_sql;
end loop;
end;
4.启动失败,有时候因为删除了父级数据而子级没删,看数据库报错信息,一步一步往下找,从下到上把子数据删除。
5.再次启动主外键。
BEGIN
for c in (select 'ALTER TABLE '||TABLE_NAME||' DISABLE CONSTRAINT '||constraint_name||' ' as v_sql from user_constraints where CONSTRAINT_TYPE='R') loop
EXECUTE IMMEDIATE c.v_sql;
end loop;
end;
2.清空数据源。清空所有数据。一般情况是对表进行条件删除。
begin
for ec in
(select table_name from user_tables)
loop
execute immediate 'delete '|| ec.table_name;
end loop;
end;
commit;
3.启动主外键:
BEGIN
for c in (select 'ALTER TABLE '||TABLE_NAME||' ENABLE CONSTRAINT '||constraint_name||' ' as v_sql from user_constraints where CONSTRAINT_TYPE='R') loop
EXECUTE IMMEDIATE c.v_sql;
end loop;
end;
4.启动失败,有时候因为删除了父级数据而子级没删,看数据库报错信息,一步一步往下找,从下到上把子数据删除。
5.再次启动主外键。
相关文章推荐
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- [导入]实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 实现删除主表数据时, 判断与之关联的外键表是否有数据
- 主外键表关联数据的同时删除
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 外键关联的表怎么删除数据
- Oracle:外键关联导致数据无法删除
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- Oracle:外键关联导致数据无法删除
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 转:邹建--实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 数据表外键关联知识
- Hibernate一对一数据关联:唯一外键关联
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- hibernate many-to-one关联,多的一端关联一的一端的外键对应数据被删了,如何避免抛出ObjectNotFoundException
- 数据库主外键关联