SQL数据库中设计时有一个报修表(报修单号,设备名称,报修时间),想让用户在使用时只需要输入设备名称,然后自动生成报修单号和报修时间,但是不知道怎么写代码,因为不是同步输入的,所以显示主键不能为空,怎么办?求大侠指教!报修单号形式如BX2011122001,

解决方案 »

  1.   

    用函数吧~create FUNCTION auto_bxdh()
    RETURNS VARCHAR(20)
    as 
    begin
    declare @dh  varchar(20)
    set @dh=''
    select @dh=max(报修单号) from 报修表 
    where 报修单号 like 'BX'+replace(substring(convert(varchar(20),getdate(),120),1,10),'-','')+'%'
    if(@dh<>'')
    set @dh=substring(@dh,1,10)+right('0'+cast(cast(right(@dh,2) as int)+1 as varchar(2)),2)
     else 
    set @dh='BX'+replace(substring(convert(varchar(20),getdate(),120),1,10),'-','')+'01'return @dh
    end在字段的默认值上设为dbo.auto_bxdh()就可以了
      

  2.   

    在时间字段的默认值上设为getdate()就可以了,谢谢了!