Невозможно связать (плохое связывание) значения в триггере Oracle - PullRequest
0 голосов
/ 29 апреля 2019

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

это дает мне ошибку невозможности связать значения

CREATE OR REPLACE TRIGGER MY_TABLE_TRGGER
   AFTER INSERT OR UPDATE
   ON MY_TABLE
   REFERENCING NEW AS NEW OLD AS OLD
   FOR EACH ROW
BEGIN
   FOR R IN (SELECT COLUMN_NAME, TABLE_NAME
               FROM USER_TAB_COLUMNS
              WHERE TABLE_NAME = 'MY_TABLE')
   LOOP
      IF UPDATING (R.COLUMN_NAME)
      THEN
         INSERT INTO MY_LOGS_TABLE (COLUMN_NAME,
                                    CREATED_BY,
                                    CREATED_ON,
                                    CURRENT_COL_VALUE,
                                    OLD_COL_VALUE,
                                    TABLE_NAME,
                                    UPDATED_BY,
                                    UPDATED_ON)
              VALUES ('' || R.COLUMN_NAME || '' , /* COLUMN name as string */,
                      :NEW.CREATED_BY ,
                      :NEW.CREATED_ON,
                      :NEW.R.COLUMN_NAME /* UNABLE TO BIND THIS VALUE */,
        :OLD.R.COLUMN_NAME/* UNABLE TO BIND THIS VALUE */,
        ''|| R.TABLE_NAME ||'' ,/* TABLE name as string */
        :NEW.UPDATED_BY,
        :NEW.UPDATED_ON );
       END IF;
    END LOOP;
END MY_TABLE_TRGGER;
...