create trigger tr
on t1
for Inster,Delete,UpDate
as 
begin
  declare @total int
  set @total=sum(t1.Price * t1.Quality)
  update t2 
  set TotalMoney=@total 
  from t1,t2 
  where (t1.id=t2.id) 
  group by id
end

解决方案 »

  1.   

    CREATE TRIGGER 名1 ON t1
    FOR INSERT
    AS
    insert t2 select id,sum(price*quality) from t2 where id in (select id from inserted)
    and id not in (select id from t2) group by id
    update t2 set totalmoney=tem.aa from (select id,sum(price*quality) aa from t1 where id in (select id from inserted)
    group by id) tem where tem.id=t2.id
    CREATE TRIGGER 名2 ON t1
    FOR update
    AS
    update t2 set totalmoney=tem.aa from (select id,sum(price*quality) aa from t1 where id in (select id from inserted)
    group by id) tem where tem.id=t2.id
    CREATE TRIGGER 名3 ON t1
    FOR delete
    AS
    update t2 set totalmoney=tem.aa from (select id,sum(price*quality) aa from t1 where id in (select id from deleted)
    group by id) tem where tem.id=t2.id
    --如果为0的要被删掉就加下面这句
    delete t2 where totalmoney<=0
      

  2.   

    Create Trigger InsRec On T1
    For Insert
    As
    Insert Into T2 (ID,TotqlMoney) Select ID,Sum(Price*Quality) Where ID In (Select ID From Inserted) Group By IDCreate Trigger UpdRec On T1
    For Update
    As
    Update A Set TotalMoney=(Select Sum(Price*Quality) From T1 B Where B.ID=A.ID) From T2 A Where A.ID In (Select ID From Inserted)Create Trigger DelRec On T1
    For Delete
    As
    Declare @rsCount Int
    Select @rsCount=(Select Count(*) From T1 Where ID In (Select ID From Deleted))
    Case 
    When @rsCount>0
    Update A Set TotalMoney=(Select Sum(Price*Quality) From T1 B Where B.ID=A.ID) From T2 A Where A.ID In (Select ID From Deleted)
    Else
    Delete From T2 Where ID In (Select ID From Deleted)
    End
      

  3.   


    Create Trigger Intr On T1
    For Insert
    As
    if exists( (select id from inserted) in (select id from t1 ))
    update t2
    set totalmoney=(Select Sum(Price*Quality) From T1 Where ID=(select id from inserted))
    where ID = (Select ID From Inserted)
    else
    Insert Into T2 
            Select ID,Sum(Price*Quality)
    from t1 
            Where ID In (Select ID From Inserted) 
            Group By ID
    endCreate Trigger Uptr On T1
    For update
    As
    update t2
    set totalmoney=(Select Sum(Price*Quality) From T1 Where ID=(select id from updated))
    where ID = (Select ID From updated)Create Trigger Detr On T1
    For delete
    As
    if exists( (select id from deleted) in (select id from t1 ))
    update t2
    set totalmoney=(Select Sum(Price*Quality) From T1 Where ID=(select id from deleted))
    where ID = (Select ID From deleted)
    else
            delete t2
            where ID In (Select ID From Deleted)
    end
      

  4.   

    CREATE TRIGGER t_1 ON t1
    FOR INSERT, delete, update
    AS
    if exists (select * from t2, inserted where t2.id = inserted.id)
       update t2 set TotalMoney = t2.TotalMoney + (select sum(price * quality) from inserted where inserted.id = t2.id) from t2
    else
       insert t2 select id, sum(price * quality) from inserted group by idif exists (select * from t2, deleted where t2.id = deleted.id)
       update t2 set TotalMoney = t2.TotalMoney - (select sum(price * quality) from deleted where deleted.id = t2.id) from t2
      

  5.   

    发分了,麻烦看看另外一个
    http://expert.csdn.net/Expert/topic/1816/1816716.xml?temp=.2939112(简化版)
    呵呵,小弟系新手,望指点