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

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

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

【问题讨论】:

    标签: sql database oracle


    【解决方案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'
        );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2021-09-29
      • 1970-01-01
      相关资源
      最近更新 更多