使用触发器删除 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 表中的行的主要内容,如果未能解决你的问题,请参考以下文章