数据库SQL2008
表入库单  
 字段为 产品编号、产品名称、规格型号、计量单位、数量、单价、金额 
当产品为  001 开头的 例如 001001,001002 的物料时,规格型号字段必须输入。如果是其他产品的时候,规格型号可以不必输入,怎么控制?

解决方案 »

  1.   

    create trigger tri_name on tb
    for insert
    as
     if exists(select 1 from tb where 产品编号 like '001%' AND 规格型号='')
        begin
        rollback
        raiserror('产品编号为001的型号不能为空',16,1)
        end
      

  2.   

    前台程序判断吧。如果用触发器的话,资源性能消耗。
    而 用前台程序的话,
    if(num.StartsWith("001"))
    {
      //判断规格型号,如果为空,则返回false.否则,返回true.
    }
      

  3.   

    UI要人性化,所以前台UI要有提示;数据输入要有验证,所以UI要检查;但现在做人的底线这么低,所以数据库要有TRIGGER来做最后保证;但我们的原则是“惩前毖后,治病救人”,所以TRIGGER里要RAISEERROR.所以一个程序体现的是哲学。