найти пользователя, который удалил запись - PullRequest
2 голосов
/ 05 марта 2012

У меня есть триггер аудита PL / SQL, который регистрирует все изменения, внесенные в таблицу.

Я могу найти идентификатор_пользователя, который вставил / удалил запись. (User_id происходит из веб-приложения, код для которого у меня нет доступа на данный момент).

итак,

TRIGGER AUD_CONFIG_TRG
AFTER INSERT OR UPDATE OR DELETE ON CONFIG   
IF INSERTING OR UPDATING THEN
v_user_value_txt := :NEW.AUDIT_UPDATED_USER_ID;

Однако для удаления я не могу просто использовать OLD.AUDIT_UPDATED_USER_ID и не могу использовать новый, так как новая запись не будет доступна.

Я думал об использовании BEFORE DELETE, но все же я могу получить только старый идентификатор пользователя, а не тот, кто удалил эту запись.

Как мне поступить, если я хочу сменить риггер так, чтобы он мог контролировать, кто удалил запись? Можно ли как-нибудь передать это через код?

1 Ответ

1 голос
/ 05 марта 2012

Возможно, вы могли бы использовать функцию UID, например:

CREATE TRIGGER AUD_CONFIG_TRG
  AFTER INSERT OR UPDATE OR DELETE ON CONFIG
  REFERENCING NEW AS NEW
              OLD AS OLD
  FOR EACH ROW
  DECLARE
    V_USER_VALUE_TXT  VARCHAR2(32);
  BEGIN
    IF INSERTING OR UPDATING THEN
      V_USER_VALUE_TXT := :NEW.AUDIT_UPDATED_USER_ID;
    END IF;

    IF DELETING THEN
      V_USER_VALUE_TXT := UID;
    END IF;
  END AUD_CONFIG_TRG;

Если вы хотите использовать имя пользователя вместо идентификатора, вы можете использовать функцию USER вместо UID.

Поделитесь и наслаждайтесь.

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