oracle触发器同一个表操作,报错

CREATEORREPLACETRIGGERtr_upd_tjslagcbeforeupdateofsndvalueONPOINTFOREACHROWBEGINif(:n... CREATE OR REPLACE TRIGGER tr_upd_tjslagc
before update of sndvalue
ON POINT
FOR EACH ROW
BEGIN
if (:new.srcid=63 and :new.sndvalue>0) then
update point set sndvalue = :new.sndvalue where id =500001;
end if;
if (:new.srcid=63 and :new.snivalue<0) then
update point set sndvalue = :new.sndvalue where id =500002;
end if;
END;

point表里:
我希望 在id=63行,sndvalue大于0时,将数据更新到id=500001;
sndvalue小于0时,将数据复制到id=500002;

但我写的这个报错,不清楚问题出在哪里了;请教大神指点
展开
 我来答
上官三云
2018-03-29 · TA获得超过2.8万个赞
知道大有可为答主
回答量:1.2万
采纳率:50%
帮助的人:3563万
展开全部
你可以分别在多个表上定义触发器。

oracle的存储过程和函数区别不大,可以在函数中进行数据的insert、update、delete等操作;

而一般数据库来说,函数只能进行查询、计算等,不能进行insert、update、delete等操作;

存储过程则不受此限制。

如果是单值函数,可以在select 列表 中使用
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式