我有A,B两表。A表的ID是自动增长。触发器如下:CREATE OR REPLACE TRIGGER T_ClientData_secure --触发器
AFTER DELETE OR INSERT
ON A
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
BEGIN
if inserting then --当插入A表时,自动将A表的ID的值插入给B表的USERID
insert into B(USERID) values(:New.ID);
end if;
END T_ClientData_secure;
/
希望实现对A表进行插入时,自动将A表的ID(自动增长列)插入到B表的USERID中。
现在报出如下问题:触发器无效且未通过重新验证
请教这是怎么一回事?
AFTER DELETE OR INSERT
ON A
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
BEGIN
if inserting then --当插入A表时,自动将A表的ID的值插入给B表的USERID
insert into B(USERID) values(:New.ID);
end if;
END T_ClientData_secure;
/
希望实现对A表进行插入时,自动将A表的ID(自动增长列)插入到B表的USERID中。
现在报出如下问题:触发器无效且未通过重新验证
请教这是怎么一回事?
insert into B(USERID) values(sequence.CURRVAL);
show error,看下错误代码是什么??
insert into B(USERID) values(sequence.CURRVAL);
show error,看下错误代码是什么??
===============================
A表的ID建立了一个触发器让它自动增长,代码如下:CREATE OR REPLACE TRIGGER clientdata_FOR_AUTOINC before insert on A
for each row
declare begin
select clientData_autoInc.nextval into:new.ID from dual;
end clientdata_FOR_AUTOINC;
/
这就是A表ID的触发器,让它自动增长。
错误代码是:ORA-04098
=======================
原因:试图将触发为执行检索,被认为是无效的。这也意味着,汇编/授权触发失败。
for each row
declare begin
select clientData_autoInc.nextval into:new.ID from dual;
end clientdata_FOR_AUTOINC;
/
不明白,.为什么要建立这个触发器?序列本身就是自动增长的啊