Я пытаюсь создать триггер, который будет вставлять значения в таблицу аудита для утверждения администратором. Триггер будет вставлять новые значения, которые добавляются в таблицу консультанта в эту таблицу аудита.
Я много раз переустанавливал триггер, но, похоже, не могу обойти ошибку компиляции! Я полагаю, это что-то маленькое?
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:
Таким образом, таблица аудита должна теперь иметь вновь введенные данные из таблицы консультанта, которая содержит атрибуты имени и почтового индекса. Другой триггер сработает, поэтому при изменении статуса эти изменения будут разрешены.
Благодарю вас!
Линия
from my_consultant_table
Ненужно
Должно быть:
insert into MyAuditTable values (MySeq.nextval, :new.con_name, :new.con_postcode, 'Pending');
Это 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;