当给 server sql 数据库添加一行时 想使行为 null 的域值为 0 
    在 server sql 数据库设计表里 使域的默认值为 (0) 通过c#程序添加行时依然是null 
现在我想通过触发器 来实现    A 表                                                A表
 ------------------------  实际想每添加1行 结果为     ------------------------------------   
 名称    数量1   数量2                                  名称    数量1   数量2
 玉米     10     null                                   玉米     10       0 
 小麦    null     20                                    小麦      0      20  也就是null 在添加时为0
请教 

解决方案 »

  1.   


    if object_id('[A]') is not null drop table [A]
    go
    create table [A]
    ([名称] varchar(4),
    [数量1] int default 0,
    [数量2] int default 0,
    [数量3] int
    )
    goinsert [A](名称,数量1) select '玉米',10;
    go
    insert [A](名称,数量1,数量2) select '小麦',null,20
    go
     
    select * from A
    /**
    名称   数量1         数量2         数量3         
    ---- ----------- ----------- ----------- 
    玉米   10          0           NULL
    小麦   NULL        20          NULL(所影响的行数为 2 行)**/
    楼主自己参考一下
      

  2.   

    不是我要的意思  假设: 插入1行  
     A 表                          
    ------------------------
      名称    数量1 
      大豆     10  要结果是 
    A 表                          
    ------------------------
      名称    数量1  数量2
      玉米    10      0 
    因为我是用c# 做程序  用的是DataTable 绑在GeidView上的提交的 ---数量2--这个字段我在程序里没调用它 因为要减少数据流量现在想 用触发器 去在远程数据库上 把---数量2-- 值改为 0这样后期统计时减少判断
      

  3.   

    其实没有必要建触发器,在前台程序里插入的时候不要指定这个字段或者如果这个字段没有输入就默认为0就可以了如果要建触发器,可以这样create trigger tri_A_insert
    on A
    instead of insert
    as
    insert A(名称,数量1,数量2 ) select 名称,isnull(数量1,0),isnull(数量2,0) from inserted
    go但做这个触发器之前,要对以前的数据先做处理update A set 数量1=0 where 数量1 is null;
    update A set 数量2=0 where 数量2 is null;