как вызвать функцию триггера в оракуле - PullRequest
0 голосов
/ 24 октября 2019

как вызвать отдельную функцию триггера в oracle. Я понимаю, что в postgres синтаксис для вызова триггерной функции:

create OR replace trigger_test 
after update or delete on person_info 
FOR EACH ROW EXECUTE FUNCTION trig_function();

Также в postgres я могу получить все старые и новые значения таблицы person_info в функции trig_function ().

Есть ли способ симулировать то же самое в оракуле, как я нашел документацию относительно триггеров немного отличается от триггеров postgres.

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Я надеюсь, что вы пытаетесь вызвать функцию из триггера. Если это так, то вы можете сделать что-то вроде

create or replace trigger trigger_test
after update or delete on person_info 
for each row
declare
c_person person_info<specify your type>%TYPE
begin
if trig_function(:NEW.person) != c_person; -- not sure what your function returns
--your logic here

end if;
end; 
/

или вы можете сделать что-то вроде

create or replace trigger trigger_test
    after update or delete on person_info 
    for each row
    begin
   if trig_function(:NEW.person) != "ABC"  ---- not sure what your function returns
   ----implement your logic with the function

   end if;
    end; 
    /
0 голосов
/ 24 октября 2019

В Oracle триггеры - это монолитная запись, состоящая из заголовка (CREATE OR REPLACE TRIGGER...) и блока PL / SQL, который вызывается при возникновении события запуска. Пример:

CREATE OR REPLACE TRIGGER EMPLOYEES_BIU
  BEFORE INSERT OR UPDATE ON EMPLOYEES
  FOR EACH ROW
DECLARE                    -- This is only included to demonstrate that 
  nSome_variable  NUMBER;  -- you can include a DECLARE section.
BEGIN                      
  IF INSERTING THEN
    :NEW.ADD_DATE := SYSDATE;
    :NEW.ADD_USER := UID;
  ELSIF UPDATING THEN
    :NEW.ADD_DATE := :OLD.ADD_DATE;
    :NEW.ADD_USER := :OLD.ADD_USER;
    :NEW.MTC_DATE := SYSDATE;
    :NEW.MTC_USER := UID;
  END IF;
END EMPLOYEES_BIU;

Старые и новые значения доступны через псевдоряды :OLD и :NEW.

...