有没有办法查看从 Oracle DB 中删除行时将执行哪些步骤?

Posted

技术标签:

【中文标题】有没有办法查看从 Oracle DB 中删除行时将执行哪些步骤?【英文标题】:Is there a way to look what steps will be executed on delete row from Oracle DB? 【发布时间】:2020-04-16 14:35:34 【问题描述】:

我有一个查询,执行 5 分钟。我想减少这个时间。为此,我必须知道将触发哪些触发器以及将级联删除其他表中的哪些行。目标表中没有很多行。那么有没有办法查看行删除(Oracle DB)将执行什么?

查询看起来像: DELETE FROM TABLE_NAME where FIELD = 'VALUE';

【问题讨论】:

【参考方案1】:

要查找表上DELETE 事件的所有触发器,请使用以下查询:

SELECT *
  FROM ALL_TRIGGERS
 WHERE TABLE_NAME = '<YOUR_TABLE_NAME>'
   AND TABLE_OWNER = '<YOUR_SCHEMA_NAME>'
   AND TRIGGERING_EVENT LIKE '%DELETE%';

要查找将通过ON DELETE CASCADE 约束删除数据的所有表,请使用以下查询:

SELECT *
  FROM USER_CONSTRAINTS
 WHERE CONSTRAINT_TYPE = 'R'
   AND DELETE_RULE = 'CASCADE'
   AND R_CONSTRAINT_NAME = (
        SELECT CONSTRAINT_NAME
          FROM USER_CONSTRAINTS
         WHERE TABLE_NAME = '<YOUR_TABLE_NAME>'
           AND CONSTRAINT_TYPE = 'P'
    );

【讨论】:

以上是关于有没有办法查看从 Oracle DB 中删除行时将执行哪些步骤?的主要内容,如果未能解决你的问题,请参考以下文章

使用 CASCADE 删除行时显示警告

当在 c# Xamarin 上显示来自 db 的 ListView 数据时,有没有办法从屏幕中删除 System.Collection.Generic 消息而不是字符串

获取oracle视图SQL语句的工具

删除 db 中的行时出现 TokenMismatchException

Oracle Rac CRS 无法启动的解决办法 CRS-4563 CRS-4000

oracle DB中的删除速度很慢