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

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

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

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

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

【问题讨论】:

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

标签: java sql oracle triggers


【解决方案1】:

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

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

【讨论】:

  • 我决定使用 CASCADE DELETE。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 2018-12-15
  • 1970-01-01
相关资源
最近更新 更多