如何在sql中的employee表中添加员工之前生成自动注册

时间:2016-08-18 10:55:30

标签: sql sql-server

我正在开发一个保存员工记录的应用程序,我希望做一些类似的事情,当用户注册新员工时,应该在SQL中自动生成员工注册号,即首先注册号码员工应该是ISO-2016-01,第二名员工应该是ISO-2016-02等等。

3 个答案:

答案 0 :(得分:1)

如果RegistrationNumber始终采用相同的格式(ISO-2016-xxx),则可以在不创建额外字段的情况下完成

你可以得到这样的最后一个数字:

select top 1 substring(r.RegistrationNumber, 10, len(r.RegistrationNumber)) 
from   Registrations r
where  substring (r.RegistrationNumber, 5, 4) = '2016'
order by substring(r.RegistrationNumber, 10, len(r.RegistrationNumber)) desc

假设它始终是ISO-2016-(= 9个字符)

可以用于该函数的完整sql将是这样的:

declare @year varchar(4) = convert(varchar, datepart(year, getdate()))
declare @prefix varchar(9) = 'ISO-' + @year + '-'
declare @number int
declare @result varchar(20)

select top 1 
       @number = substring(r.RegistrationNumber, 10, len(r.RegistrationNumber)) 
from   Registrations r
where  substring (r.RegistrationNumber, 5, 4) = @year
order by substring(r.RegistrationNumber, 10, len(r.RegistrationNumber)) desc

set @number = @number + 1
set @result = @prefix + convert(varchar, @number)

select @result

答案 1 :(得分:0)

可能是这样的吗?

 $years18 = intval(date('Y', strtotime('-18 years')));

其中ALTER TABLE dbo.Employes ADD RegistrationNumber AS CONCAT('ISO-', DATEPART(year, DateReg), '-', Id); - 具有用户注册日期时间的列的名称,DateReg - 标识列

答案 2 :(得分:0)

我不能通过SQL Server自动生成 ISO-2016-01 。您必须编写一个函数,每次在向表中添加任何新行之前为您生成此ID。功能将 -
1.检查当前年份 2.为当前年份生成的最后一个ID(您可能希望跟踪给定年份的ID) 3.使用上述数据生成下一个id 希望它有所帮助!