这个简单的触发器如何写???
当 数量和单价 改编的时候 金额自动计算=数量*单价CREATE TRIGGER AutoNum ON [dbo].[T_Proc] 
FOR INSERT, UPDATE
AS
begin
   declare @数量 int
   declare @单价 money
   declare @编号 varchar(10)
  if update(数量) or update(单价)  then
    begin
     select @数量 from deleted
     select @单价 from inserted
     select @编号 from inserted
     update T_Proc set 金额=@数量*@单价 where 编号=@编号
   end
end

解决方案 »

  1.   

    ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('update T_Proc  set 数量=6,单价=7 where 编号=''001''');
      ADOQuery1.ExecSQL
    这样的话,为啥 金额 的值为null呢?
      

  2.   

    应该是那三个select处出问题了!
      

  3.   

    应该是那三个select处出问题了!???如何解决呢?我第一次设计触发器!
      

  4.   

    表结构:
     编号:varchar(10)
     金额:money
     数量: int
     单价: money建立一个触发器自动计算
    金额:=数量*单价
      

  5.   

    不建议你这么处理,你完全可以在程序中控制,或用sql语句来表示金额=数量*单价。总是感觉用触发器不怎么舒服,还不如用一存储过程来得好些,你这样处理的话一涉及到数量大(指你提交的多)时就容易出问题,不建议你用这种表结构。
      

  6.   

    CREATE TRIGGER AutoNum ON [dbo].[T_Proc] 
    FOR INSERT, UPDATE
    AS
    begin
       declare @数量 int
       declare @单价 money
       declare @编号 varchar(10)
      if update(数量) or update(单价)  then
        begin
         select @数量 from deleted
         select @单价 from inserted
         select @编号 from inserted
         update T_Proc set 金额=@数量*@单价 where 编号=@编号
       end
    end
    //我想知道的是 上面那里不对了!????
      

  7.   

    CREATE TRIGGER AutoNum ON [dbo].[T_Proc] 
    FOR INSERT, UPDATE
    AS
    begin
       declare @数量 int
       declare @单价 money
       declare @编号 varchar(10)
      if update(数量) or update(单价)  then
        begin
         select @数量 from inserted
         select @单价 from inserted
         select @编号 from deleted
         update T_Proc set 金额=@数量*@单价 where 编号=@编号
       end
    end