使用触发器删除 Oracle 表中的行

Posted

技术标签:

【中文标题】使用触发器删除 Oracle 表中的行【英文标题】:Delete rows in Oracle table with triggers 【发布时间】:2013-01-13 10:58:09 【问题描述】:

我想删除与外键连接的 Oracle 表中的行。为了从表中删除行,我有两个选择:

    必须严格按顺序运行的两个 DML 语句。

    Oracle 删除前在主键表上触发。

哪种方法更好?我正在使用带有 Java 7 的 JDBC Oracle 瘦驱动程序。

【问题讨论】:

您也可以使用 ON DELETE CASCADE。 有趣的提议。我必须在桌子上附加 CASCADE DELETE。这是否比触发器更好的性能? 触发器需要每行触发一次,约束可以一次性删除所有子行。 cascade delete 是外键的一个选项,而不是表。 关于这个一般主题,不要忘记您也可以根据父表和子表的视图进行删除,并在父表上放置谓词以标识将被删除的子记录。跨度> 【参考方案1】:

不要触发。你不应该像那样隐藏重要的东西。

CASCADE 是一个选项,但我个人会选择执行删除的存储过程。因此,想要删除行的人必须使用该过程,并且他(她)知道它也会删除子表中的行。

【讨论】:

我决定使用 CASCADE DELETE。谢谢!

以上是关于使用触发器删除 Oracle 表中的行的主要内容,如果未能解决你的问题,请参考以下文章

oracle中触发器有啥作用

用触发器如何在java中删除数据库中两个表中的记录(两个表有关联如表A.aID=表B.bID)

使用触发器中断 Oracle 数据库删除和更新行

Mysql - 创建触发器以根据插入另一个表中的行插入新行

根据另一个表中的值删除行

如何使用oracle中的触发器从另外两个表中插入一个表中的数据