Получение значения, которое запустило триггер Oracle - PullRequest
7 голосов
/ 12 января 2012

Я очень плохо знаком с триггерами Oracle. Предположим, у меня есть триггер для вставки в таблицу emp. Есть ли способ узнать, какая была вставленная запись, которая запустила триггер. Я хотел, чтобы у триггера был код, который что-то делает, если во вставленной записи было определенное значение.

Ответы [ 2 ]

10 голосов
/ 12 января 2012

Если у вас есть триггер уровня строки, вы можете просто использовать :NEW псевдозапись

CREATE TRIGGER name_of_trigger
  BEFORE INSERT ON emp
  FOR EACH ROW
DECLARE
  <<declare variables>>
BEGIN
  IF( :new.ename = 'JUSTIN' )
  THEN
    <<do something if the newly inserted ENAME value is 'JUSTIN'>>
  END IF;
END;

Для триггера DDL подход совершенно другой. В этом случае псевдофункции ora_dict_obj_owner и ora_dict_obj_name возвращают владельца и имя таблицы, над которой работает оператор DDL.

7 голосов
/ 12 января 2012

Вставляемая строка доступна как NEW в триггере

Ознакомьтесь с руководством для более подробной информации.

http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/create_trigger.htm#BABEBAAB

http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/triggers.htm#LNPLS99955

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