SQL 触发器怎么插入不了数据

来源:百度知道 编辑:UC知道 时间:2024/06/08 06:48:38
有表1,表2,表1里有日期和金额,表2里有日期和金额,向表1里插入数据,如果插入的日期在表2里边有,就更新当天的金额,如果插入的日期 表2里没有,就同时向表2里插入数据 触发器如下,问题:可以更新数据,但是表2里插不进数据
Create trg_cha on 表2 for insert,update
as
if exists(select 日期 from inserted where 日期 in(select 日期 from 表1) )
begin
update 表2 set 金额=金额+(select 金额 from inserted) where 日期=(select 日期 from inserted)
end
else
insert into 表2 (日期,金额)
select 日期,金额 from inserted
end
不好意思,问题修改,触发器在表1上,上边些错了
Create trg_cha on 表1 for insert,update
as
if exists(select 日期 from inserted where 日期 in(select 日期 from 表1) )
begin
update 表2 set 金额=金额+(select 金额 from inserted) where 日期=(select 日期 from inserted)
end
else
insert into 表2 (日期,金额)
select 日期,金额 from inserted
end

--先插入表1中数据
Create trigger trg_cha on 表1
after insert
as
if exists(select 日期 from 表2 where 日期 in (select 日期 from inserted))
update 表2 set 金额= (select sum(金额)from 表1where 日期= (select 日期 from inserted) group by 日期
)where 日期= (select 日期 from inserted)
else
insert into 表2
select (select 日期 from inserted),(select sum(金额)from 表1 where 日期= (select 日期 from inserted) group by 日期)

。。。不能用中文 全部改成拼音 你的字段名。。。

楼主是什麼数据库,语法和逻辑都是错的

MS SQL这样改,支持批量插入
Create trigger trg_cha on 表1 --这里改为表1
for insert,update
as
update b
set 金额=b.金额+i.金额
from (select 日期,sum(金额)as 金额 from inserted group by 日期)i
inner join 表2 b on i.日期=b.日期

insert into 表2 (日期,金额)
select i.日期,i.金额
from (select 日期,sum(金额)as 金额 from inserted group by 日期) i
left join 表2 b on i.日期=b.日期
where b.日期 is null