Триггер удаления, вызывающий проблемы с FK при удалении набора Null и вызывающий ORA-03113 - PullRequest
0 голосов
/ 31 марта 2020

FK для таблицы -

ALTER TABLE APP.BC_CUSTOM_SI_PROPERTIES ADD (  
  CONSTRAINT BC_SI_PROPS_CUSTOM_ATTR_FK 
    FOREIGN KEY (CUSTOM_ATTRIBUTE_MASTER_ID) 
     REFERENCES APP.BC_CUSTOM_ATTRIBUTE_MASTERS (CUSTOM_ATTRIBUTE_MASTER_ID)
      ON DELETE SET NULL
       DEFERRABLE INITIALLY IMMEDIATE
        ENABLE VALIDATE);

Запуск по BC_CUSTOM_SI_PROPERTIES -

CREATE OR REPLACE TRIGGER APP.BC_ACS_SI_CUST_PROPERTY
AFTER DELETE OR INSERT OR UPDATE OF SI_PROPERTY_ID,PROPERTY_NAME
ON app.bc_custom_si_properties  REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW
WHEN (NEW.INPUT_TYPE_CC=3 OR OLD.INPUT_TYPE_CC=3)
DECLARE
l_object_id app.bc_acs_obj_change_tracking.object_id%TYPE;
l_object_type app.bc_acs_obj_change_tracking.object_type%TYPE ;
l_owner app.bc_acs_obj_change_tracking.object_id2%TYPE;

BEGIN
   IF NOT app.utils_Pkg.workspace_dup_del_running_p = 1 THEN -- 
      IF SYS_CONTEXT('clus_ctx','import_in_progress') IS NULL THEN
         IF INSERTING OR UPDATING THEN
             l_object_id := :new.si_property_id;
             l_owner := :new.owner;
         ELSIF DELETING THEN
             l_object_id := :old.si_property_id;
             l_owner := :old.owner;
         END IF;

         l_object_type := 'SI_PROPERTY_ID';

         IF app.bc_acs_pkg.ws_access_policies_enabled_p (l_owner) = 1 THEN
            app.bc_acs_pkg.populate_obj_change_tracking
                (p_object_type => l_object_type,
                 p_object_id   => l_object_id,
                 p_object_id2  => l_owner,
                 p_object_id2_type => 'WORKSPACE'
                );
         END IF;
      END IF;
    END IF;

END ;
/

При попытке удалить CUSTOM_ATTRIBUTE_MASTER_ID из канала BC_CUSTOM_ATTRIBUTE_MASTERS из жабы, получая конец сообщения ORA-03 на конце сообщения ORA-03 ,

Изначально я столкнулся с проблемой в другом наборе таблиц, где у меня был сложный триггер, и я думал, что это сложный триггер, который вызывает проблему. Но затем я проверил другие случаи, когда даже обычный триггер удаления вызывает проблему.

Кто-нибудь видел такую ​​проблему и знает обходной путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...