CREATE TRIGGER UPDate_User_Card ON [dbo].[detailconsumption] 
FOR INSERT, UPDATE
AS
BEGINDECLARE @aa TABLE(userid int,yue decimal(9,1))insert into @aa(userid,yue) 
select A.userid,
               sum(case status when 1 then price 
                    else -(price) end)
        from inserted A INNER JOIN detailconsumption B 
             ON B.userid = A.userid
        group A.useridupdate B
set B.cardmoney = A.yue
from @aa A inner join usersystem B 
     on B.userid =A.useridupdate B
set B.Price = A.yue
from @aa A inner join CardUser B 
     on B.userid =A.useridEND

解决方案 »

  1.   

    两条记录同时插入是
    insert detailconsumption values(...)
    insert detailconsumption values(...)
    还是
    insert detailconsumption 
    select * from ......
      

  2.   

    CREATE TRIGGER UPDate_User_Card ON [dbo].[detailconsumption] 
    FOR INSERT, UPDATE
    AS
    BEGINDECLARE @aa TABLE(userid int,yue decimal(9,1))insert into @aa(userid,yue) 
    select A.userid,
                   sum(case B.status when 1 then B.price 
                                     when 0 then -(B.price) end)
            from inserted A INNER JOIN detailconsumption B 
                 ON B.userid = A.userid
            group A.useridupdate B
    set B.cardmoney = A.yue
    from @aa A inner join usersystem B 
         on B.userid =A.useridupdate B
    set B.Price = A.yue
    from @aa A inner join CardUser B 
         on B.userid =A.useridEND
      

  3.   

    CREATE TRIGGER UPDate_User_Card ON [dbo].[detailconsumption] 
    FOR INSERT, UPDATE
    ASupdate usersystem set cardmoney=isnull(tem.yuer,0) from 
    (select userid,sum(case when status=1 then -price else price end) yuer from detailconsumption where userid in (select userid from inserted)) tem
    where usersystem.username=tem.useridupdate CardUser set cardmoney=isnull(tem.yuer,0) from 
    (select userid,sum(case when status=1 then -price else price end) yuer from detailconsumption where userid in (select userid from inserted)) tem
    where usersystem.Userid=tem.userid
      

  4.   

    CREATE TRIGGER UPDate_User_Card ON [dbo].[detailconsumption] 
    FOR INSERT, UPDATE
    AS
    update usersystem set cardmoney=isnull(tem.yuer,0) from (select userid,sum(case when status=1 then -price else price end) yuer from detailconsumption where userid in (select userid from inserted) group by userid) tem where usersystem.username=tem.useridupdate CardUser set cardmoney=isnull(tem.yuer,0) from (select userid,sum(case when status=1 then -price else price end) yuer from detailconsumption where userid in (select userid from inserted) group by userid) tem where usersystem.Userid=tem.userid