【发布时间】:2014-09-03 06:56:30
【问题描述】:
我正在使用 oracle 10g。 我想从存在子记录的架构(用户)的每个表中删除所有记录。 我试图禁用每个表中存在的所有约束,然后尝试删除记录。 但这样做花了一整天的时间。 我们有更好的方法吗?
我试过了
BEGIN
FOR i IN (SELECT table_name FROM user_tables)
LOOP
EXECUTE IMMEDIATE 'delete from' || '"'||i.table_name||'"';
END LOOP;
COMMIT;
END;
但出现子记录时会出现异常。 我想要这样的东西。
BEGIN
FOR i IN (SELECT table_name FROM user_cons_columns)
LOOP
for j in (select column_name from i.table_name)
loop
EXECUTE IMMEDIATE 'alter table "'||i.table_name||'"'||' disable constraint "'||j.column_name||'"';
end loop;
END LOOP;
COMMIT;
END;
请帮帮我。
【问题讨论】:
-
禁用外键需要一整天吗?
-
是的,因为我有大约 200 个表和 4 个不同的模式。
-
是否可以删除架构并在将来重新创建它?
-
是的。我将来会重新创建它
-
@KhurramZulfiqarAli 即使您在 4 个模式中执行循环,禁用约束也需要太多时间?