Ошибка при компиляции триггера: PLS-00357: Table,View Or Sequence reference not allowed in this context

Есть такой код:

CREATE TABLE PODPISANT (
    "Number"                           NUMBER NOT NULL,
    scop_of_authority                  CHAR(1 char),
    status                             CHAR(1 char),
...
);

create trigger basis_of_authority_tg before insert on PODPISANT
begin 
  if PODPISANT.status = '3' and basis_of_authority_of_org is null then
    raise_application_error(-20001,'basis_of_authority_of_org для Статус=3. '||
      'Указываются основания полномочий (доверия) организации');
  end if;
end;

И после ккомпиляции тригера такая ошибка:

PLS-00357: Table,View Or Sequence reference 'PODPISANT.STATUS' not allowed in this context

Что не так с тригером?


Ответы (1 шт):

Автор решения: 0xdb

Обращаться к значениям колонки в теле триггера можно только в строчном триггере с переменными типа запись (rowtype): :OLD и :NEW:

create table podpisant (
    "Number"          number not null,
    scop_of_authority char(1 char),
    status            char(1 char))
/    
create or replace trigger basis_of_authority_tg 
before insert on podpisant for each row
begin 
    if :new.status = '3' then
        raise_application_error(-20001, 'basis_of_authority_of_org для Статус=3. '||
            'Указываются основания полномочий (доверия) организации');
    end if;
end;
/

insert into podpisant values (1, 'a', '3')

ORA-20001: basis_of_authority_of_org для Статус=3. Указываются основания полномочий (доверия) организации

→ Ссылка