假设在一个项目中,现在有一个表有20个字段,针对这个表的修改可能有8种情况(譬如某些情况下只是修改某一个或者某几个字段),那我现在在项目中如何设计呢?
    1.在项目中针对这个表的修改只写一个方法和一个存储过程,上面的8种情况无论修改一个还是2个字段还是多个字段,我都是利用这一个存储过程;
    2.针对这八种情况各写一个方法和一个存储过程,每次修改只是修改相应的字段。 请教这两种方案哪一种更好一些呢? 我现在是利用第一种方案,理由是减少了项目中代码的冗余。我对数据库不是很懂,请问这样是不是对数据库中的操作不好(譬如效率、日志大小)?  非常感谢!!

解决方案 »

  1.   

    不是的,第一种方案存储过程:
       updat Table set col1=@col1,col2=@col2,col3=@col3,...,col20=@col20 where ID=@ID
       也就是说哪怕只修改一个字段也是执行上面的过程每个字段全部修改一遍。
      

  2.   

    建议你只加上需要修改的字段,不需要修改的不要加.
    例如:修改col1
    updat Table set col1=@col1 where ID=@ID 
    例如:修改col1,col2
    updat Table set col1=@col1 , col2 = @col2 where ID=@ID 
      

  3.   

    1、创建同名过程,加上参数[ ; number ] 传入不同参数
    2、create proc pr @set varchar(1000),@id int
      as
         exec('updat Table set'+@set+' where ID='+ltrim(@ID))
    注意字符串中的单引用双的