数据库设计主键自动编号问题

fgh013 2011-12-19 11:21:41
SQL数据库中设计时有一个报修表(报修单号,设备名称,报修时间),想让用户在使用时只需要输入设备名称,然后自动生成报修单号和报修时间,但是不知道怎么写代码,因为不是同步输入的,所以显示主键不能为空,怎么办?求大侠指教!报修单号形式如BX2011122001,
...全文
84 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
美到心痛 2011-12-20
  • 打赏
  • 举报
回复
用函数吧~

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()就可以了
fgh013 2011-12-20
  • 打赏
  • 举报
回复
本来想用来着'但是代码不太会写'可否讲的详细一点'谢谢!
fgh013 2011-12-20
  • 打赏
  • 举报
回复
在时间字段的默认值上设为getdate()就可以了,谢谢了!
夏饮乐 2011-12-20
  • 打赏
  • 举报
回复
大虾的函数套函数用的太牛了,我楞是没看懂,要是大虾能讲解下就好了

[Quote=引用 3 楼 sjcss 的回复:]
用函数吧~

SQL code


create FUNCTION auto_bxdh()
RETURNS VARCHAR(20)
as
begin
declare @dh varchar(20)
set @dh=''
select @dh=max(报修单号) from 报修表
where 报修单号 like 'BX'+replace(substring(conver……
[/Quote]
fgh013 2011-12-20
  • 打赏
  • 举报
回复
学习了,不错呢,十分感谢!
报修时间也就可以用类似的方法实现了?
美到心痛 2011-12-19
  • 打赏
  • 举报
回复
用触发器~

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧