求一Sql触发器,向表里插入数据时判断该条记录是否存在,如果存在则更新,不存在则插入,求大神指导 20

现有一顾客消费记录表record,新插入一条顾客记录,若有此顾客则消费金额累计,若无则插入此记录/*创建一张每个用户消费总金额表*/createtablerecord(c... 现有一顾客消费记录表record,新插入一条顾客记录,若有此顾客则消费金额累计,若无则插入此记录
/* 创建一张每个用户消费总金额表 */
create table record(
customer char(20),
sumprice int);
insert into record values('张三',10);
insert into record values('张三',20);
/*创建触发器*/
create or replace trigger t1 before insert on record as
declare
cost int;
ename char(20);
num int;
begin
select cost=sumprice,ename=customer from inserted;
select num=count(customer) from record where customer=ename;
if num=0 then
insert into record values(ename,cost);
else
update record
set sumprice=sumprice+cost where customer=ename;
end if;
end;

但是执行INSERT语句就会出错,求大神帮忙指导,谢谢
执行语句:2
insert into record values('张三',30);
执行成功: 否
执行耗时: 1 毫秒
服务器消息:
[KingbaseES Server]ERROR: 关系"INSERTED"不存在
展开
 我来答
longrenyingdc8ecb1
2015-11-15 · TA获得超过1万个赞
知道大有可为答主
回答量:6032
采纳率:82%
帮助的人:2372万
展开全部
你的除发器没有触发条件,再说这也不用除发器啊。用merge就可以。这个就可以达到你的要求的。
追问
因为是在学触发器,所以老师要求必须用,before insert on record 这个不是触发器的触发条件吗?
追答
select cost=sumprice,ename=customer from inserted;
后面的inserted 是什么?现在报的错误就是这个。
反正我曾经写过的触发器没见过这么写的。如果是新特性,那么我就真的不知道了,好久没接触过新版本数据库了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式