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
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; 不执行呢
解决方案 »
- 谁知道怎么把Delete的数据恢复(急)
- plsql 连不上数据库
- TRUNCATE TABLE后索引也不好用了?谢谢!
- 急,该sql语句在toad和应用程序里出错,select '国' as test from dual,但是
- 我想知道我的ORACLE里都有那些表建立了索引,我该用什么命令查询?
- 不小心删除表空间!!!!!!
- 安装9i问题,好像跟别人的不太一样
- 在开贴求oracle安装问题
- 怎么在sql语句里判断一个字符串是不是date型的
- 为什么ManagementServer启动不起来?
- 请问将指定的日期减去一个月的sql如何写? oracle数据库
- 急!!!尝试过很多次,不知如何将Oracle中Long类型转换成其他数据类型。请指教!谢谢!
则执行这个触发器是插入之前触发,那么
tmp 就永远为0
PS:oracle9i及以上版本