首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在PL/SQL中根据表的FK关系生成DELETE语句?

如何在PL/SQL中根据表的FK关系生成DELETE语句?
EN

Stack Overflow用户
提问于 2010-04-21 01:02:26
回答 3查看 25.3K关注 0票数 6

是否可以通过脚本/工具使用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“。

EN

Stack Overflow用户

发布于 2010-04-21 07:50:44

问题是,如果顶级键列没有一直传播到底部。如果你可以从parent_id = :1的孙子文件中删除,那就好了。如果你非做不可,

代码语言:javascript
复制
DELETE FROM grandchild
WHERE child_id in (SELECT id FROM child WHERE parent_id = :1)

然后,深入6到7层将给出难看的(并且可能很慢的)查询。

虽然你说你不能使约束级联,但你能让它们在初始时立即延迟吗?这样就不会影响现有的代码。您的“删除”会话将使所有约束被推迟。然后从父记录中删除,从子记录不在父记录中的子项中删除,从子记录中没有匹配的子项中删除,等等。

票数 3
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2677081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档