注册 登录
编程论坛 SQL Server论坛

求助, 员工ID应从“00001”开始,依次依增

a481143 发布于 2010-06-29 13:37, 1483 次点击
已建表

create table Employee

(
EmpID             smallint      not null,     --      员工ID
EmpName           char(20)      not null,     --    员工姓名
EmpAge            smallint      not null,     --        年龄
EmpAddress        varchar(20)   not null,     --        地址
EmPbirthday       smalldatetime not null,     --        生日
EmpTel            char(20)      not null,     --        电话
EmpDate           smalldatetime not null,     --    入职时间
EmpMarital        varchar(10)   not null,     --    婚姻状况
EmpType           varchar(10)   not null,     --    员工类型
DepID             smallint      not null      --所属部门ID号
)



在此表的基本上,员工ID应从“00001”开始,依次依增
请问怎么编写一个存储过程来实现? 请高手指点。
9 回复
#2
happynight2010-06-30 11:39
有个业务上的逻辑没交代:那就是员工离职后 工号能否被收回重新利用.
#3
w4219475452010-06-30 18:26
能与不能都有那些区别呢。
#4
a4811432010-06-30 23:05
不考虑  员工离职后 工号能否被收回重新利用.
#5
三断笛2010-07-01 00:51
新建一个表如t1,记录当前学号的最大值.也就是每次生成一个学号,就将此学号写入到t1
--开启事务,并加上holdlock锁
下次生成学号就取这个最大的学号,加1
将此最大值写入t1
提交事务
将这学号转换成字符串,记录它的长度,并用Replicate()生成指定长度的前缀0,合并至刚刚取到的学号
#6
cnfarer2010-07-01 07:28
其实整型很好,也可以设置为自动增长。只要显示的时候处理下就行了!
#7
游来游去的鱼2010-07-11 16:59
请问这个问题怎么处理啊,我也遇到这个问题,就是流水号是00001,加1后就变成2了前面的0000就去掉了,关注中ing
#8
jksu2010-07-19 12:31
可以写个函数或者触发器,每次向表中插入数据时,检查表中最大的ID,在这个ID基础上加1或转成‘00002’等你想要的ID后在插入到表中

当然,数据量大的时候会影响性能
#9
snail50072010-07-19 14:24
学习中~
1