是否可以通过脚本/工具使用Oracle PL/SQL根据表fk关系自动生成多个delete语句?
在示例中:我有一个表: first (CHICKEN_CODE NUMBER),有30个表具有对其CHICKEN_CODE的fk引用,我需要删除这些表;还有其他150个表与这30个表有外键链接,我需要先删除它们。
有没有我可以运行的工具/脚本PL/SQL,以便根据FK关系为我生成所有必要的delete语句?
(顺便说一下,我知道关系上的级联删除,但请注意:我不能在我的生产数据库中使用它,因为它很危险!)
我正在使用Oracle DataBase 10G R2。
请注意这一点:
Generate Delete Statement From Foreign Key Relationships in SQL 2008?
另一个用户刚刚用SQL SERVER 2008编写了它,有谁能够转换到Oracle 10G PL/SQL?我不能...:-(
请假设V_CHICKEN和V_NATION是从根表中选择要删除的鸡的条件:条件是:根表上的"where COD_CHICKEN = V_CHICKEN和COD_NATION = V_NATION“。
发布于 2010-04-21 07:50:44
问题是,如果顶级键列没有一直传播到底部。如果你可以从parent_id = :1的孙子文件中删除,那就好了。如果你非做不可,
DELETE FROM grandchild
WHERE child_id in (SELECT id FROM child WHERE parent_id = :1)然后,深入6到7层将给出难看的(并且可能很慢的)查询。
虽然你说你不能使约束级联,但你能让它们在初始时立即延迟吗?这样就不会影响现有的代码。您的“删除”会话将使所有约束被推迟。然后从父记录中删除,从子记录不在父记录中的子项中删除,从子记录中没有匹配的子项中删除,等等。
https://stackoverflow.com/questions/2677081
复制相似问题