我正在尝试创建一个触发器,该触发器将值插入审核表中以供管理员用户批准。触发器将把添加到顾问表中的新值插入此审计表中。
我已经多次触发触发器,但是似乎无法绕过编译错误!我认为这有点小?
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:
因此,审核表现在应具有来自顾问表的新输入数据,其中包含名称和邮政编码属性。将触发另一个触发器,以便在状态更改时允许这些更改。
谢谢!
答案 0 :(得分:2)
行
from my_consultant_table
不必要。
应该是:
insert into MyAuditTable values (MySeq.nextval, :new.con_name, :new.con_postcode, 'Pending');
答案 1 :(得分:2)
此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;
答案 2 :(得分:0)
尝试一下:
begin
insert into MyAuditTable
select
MySeq.nextval,
:new.con_name,
:new.con_postcode,
'Pending'
from dual;
end;
一个提示:创建u序列时,始终使用1到9999999 .... anc逐个递增。 只需使用
create sequence owner.table nocache;