用计算字段。不过,建议省去value字段。多余。另,注意避免使用关键字作为字段名。

解决方案 »

  1.   

    用计算字段alter table youtable add c as (date1+date2+date3)
      

  2.   

    CREATE TRIGGER a_change ON table
    FOR update,insert
    AS
    update table set value=(select data1+data2 from inserted)
      

  3.   

    当有一个字段为NULL,整个 Value=NULL 为什么???
    bh data1  data2  data3  value
    1   Null     20     20               的时候,相加就不可以????
    ??????????????????????
      

  4.   

    create trigger  触发器名
    on 表
    for update,insert
    as declare @data1 int,@data2 int,@data3 int
    select @data1=data1,@data2=data2,@data3=data3 from inserted
    update 表 set value=(@data1+@data2+@data3)
      

  5.   

    alter table youtable add c as (isnull(date1,0)+isnull(date2,0)+isnull(date3,0))
      

  6.   

    CREATE TRIGGER a_change ON table FOR update,insert AS
      update t set value=data1+data2+data3 from table as t 
        inner join inserted as i on t.bh=i.bh
    go触发器是针对多条记录组成的“集合”而操作的。不要仅仅用单条记录做测试,这样是很不负责任的程序员,这样的触发器反而会轻易破坏系统的数据一致性。如果确实要针对单条记录做计算,请写上检查条件。例如:CREATE TRIGGER a_change ON table FOR update,insert AS
     if @@rowcount>1 begin
        raiserror('对不起,没有对多条记录设计程序。请一次紧紧操作一条记录。',16,1)
        rollback tran
        return
     end update table set value=(select data1+data2 from inserted) 
        where bh=(select bh from inserted)
    go
    这是基本的常识。随意写,破坏力非常大。请大家注意捉虫!
      

  7.   

    sorry!上面,最好写成“=i.data1+i.data2+i.data3”,不然SQL Server搞不明白用哪一个表。
      

  8.   

    to w_rose(w_rose) :
    对于批量插入的数据应该怎么办?