触发器问题 大家帮看看
CREATE OR REPLACE TRIGGER HRBEURS.TR_ADD_XXY_KH_GZL_TY
BEFORE INSERT
ON HRBEURS.XXY_KH
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
declare
tmp int;
begin
GZL:= 100*Z/A+N;
select (select count(*) from XXY_KH where JGH = :new.JGH and ND = :new.ND) into tmp from dual;
if (tmp > 0) then
update XXY_KH set GZL = '54 ' where JGH = :new.JGH and ND = :new.ND;
DBMS_OUTPUT.PUT_LINE( 'updatesql ');
raise_application_error(-20009, 'The application not alow execute this action ');
else
null;
DBMS_OUTPUT.PUT_LINE( 'ok ');
end if;
end;
/
就是向一个表中插入记录,如果已经存在就更新原先的记录 如果不存在就插入
我这个触发器插入一条新的记录之后(记录已经存在) 是没有插入新的记录但也没有更新原先符合条件的记录
大家帮我看看有什么毛病
为什么更新语句
update XXY_KH set GZL = '54 ' where JGH = :new.JGH and ND = :new.ND; 不执行呢
------解决方案--------------------由于你的触发器是 BEFORE INSERT 类型
则执行这个触发器是插入之前触发,那么
tmp 就永远为0