Sql 如何在oracle中清除包含大量引用的表?

Sql 如何在oracle中清除包含大量引用的表?,sql,oracle,oracle10g,foreign-keys,Sql,Oracle,Oracle10g,Foreign Keys,例如,假设我有表A,那么我有表B-Z,表A的主键有一个外键。然后,可能还有一些表对B-Z的主键约束中的表具有外键约束。有没有简单的方法可以清除表A和所有引用A(或引用引用A的表)的表,而不必显式地从每个表中删除或向每个外键添加ON-CASCADE约束 请注意,这主要用于测试目的,不用于生产。我会删除整个模式,然后重新开始,但这并不适用于每个测试(考虑到构建模式需要多长时间)。我认为最有效的方法是删除所有FK,截断表,然后重建FK。有什么原因不能使用级联吗?我不是必须将级联添加到每个外键吗?老实说

例如,假设我有表A,那么我有表B-Z,表A的主键有一个外键。然后,可能还有一些表对B-Z的主键约束中的表具有外键约束。有没有简单的方法可以清除表A和所有引用A(或引用引用A的表)的表,而不必显式地从每个表中删除或向每个外键添加ON-CASCADE约束


请注意,这主要用于测试目的,不用于生产。我会删除整个模式,然后重新开始,但这并不适用于每个测试(考虑到构建模式需要多长时间)。

我认为最有效的方法是删除所有FK,截断表,然后重建FK。

有什么原因不能使用级联吗?我不是必须将级联添加到每个外键吗?老实说,如果我要采用这种方法,为什么我不直接从每个表中删除呢?为什么你不直接从每个表中删除呢?你能从一个空数据库的备份中恢复吗?你的模式已经准备好了吗?>我不必向>每个外键添加级联吗?老实说,如果我>要采取这种方法,为什么>我不只是从每个表中删除>呢?嗯,您只需更改一次外键,或者更确切地说,更改它们的生成脚本。但是,在修复子表中的特定行之前,他将无法重新创建所有FK。我想他只是想从子表中删除一些行。我的回答是基于短语“清除表A和所有引用A的表(或引用引用A的表)”,我认为这意味着子表也应该完全清空。