Простая ошибка триггера ?! PL / SQL: ORA-00933: - PullRequest
0 голосов
/ 02 января 2019

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

Я многократно переустанавливал триггер, но, похоже, не могу обойти ошибку компиляции!Я предполагаю, что это что-то маленькое?

DROP TABLE   MyAuditTable;
CREATE TABLE MyAuditTable (
    audit_id INTEGER NOT NULL,
    new_name VARCHAR2 (30),
    new_postcode VARCHAR2 (20),
    status     VARCHAR2 (15), 
    CONSTRAINT pk_MyAuditTable  PRIMARY KEY ( audit_id )
); 


DROP sequence MySeq;
Create sequence MySeq MINVALUE 1 MAXVALUE 9999999 INCREMENT BY 1 START WITH 1;

drop trigger MyTrigger;
create trigger MyTrigger
after insert on my_consultant_table
for each row
begin
    insert into MyAuditTable values (
        MySeq.nextval, :new.con_name, 
        :new.con_postcode, 
        'Pending'
    )
    from my_consultant_table;
end;
/

ОШИБКА: PL / SQL: ORA-00933:

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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Это ORA-00933 обозначает синтаксическую ошибку в вашем объявлении триггера:

begin
    insert into MyAuditTable values (
        MySeq.nextval, :new.con_name, 
        :new.con_postcode, 
        'Pending'
    )
    from my_consultant_table;
end;

Трейлинг from my_consultant_table не имеет смысла, просто удалите его, и все будет в порядке:

begin
    insert into MyAuditTable values (
        MySeq.nextval, :new.con_name, 
        :new.con_postcode, 
        'Pending'
    );
end;
0 голосов
/ 02 января 2019

Линия

from my_consultant_table

Не нужно.

Должно быть:

insert into MyAuditTable values (MySeq.nextval, :new.con_name, :new.con_postcode, 'Pending');
...