求一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"不存在 展开
/* 创建一张每个用户消费总金额表 */
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"不存在 展开
1个回答
展开全部
你的除发器没有触发条件,再说这也不用除发器啊。用merge就可以。这个就可以达到你的要求的。
追问
因为是在学触发器,所以老师要求必须用,before insert on record 这个不是触发器的触发条件吗?
追答
select cost=sumprice,ename=customer from inserted;
后面的inserted 是什么?现在报的错误就是这个。
反正我曾经写过的触发器没见过这么写的。如果是新特性,那么我就真的不知道了,好久没接触过新版本数据库了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询