Есть ли способ посмотреть, какие шаги будут выполнены при удалении строки из Oracle БД? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть запрос, который выполняется 5 минут. Я хочу сократить это время. Для этого я должен знать, какие триггеры будут срабатывать и какие строки из других таблиц будут удаляться в каскаде. В целевой таблице не так много строк. Так есть ли способ посмотреть, что будет выполнено при удалении строки (Oracle DB)?

Запрос выглядит так: DELETE FROM TABLE_NAME where FIELD = 'VALUE';

1 Ответ

1 голос
/ 16 апреля 2020

Чтобы найти все триггеры события 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'
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...