Sql server 我们是否可以根据MS SQL 2008中的日期更改创建任何存储过程标识更改?

Sql server 我们是否可以根据MS SQL 2008中的日期更改创建任何存储过程标识更改?,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我们可以在SQLServer2008中创建如下示例中的任何存储过程吗 我有一张桌子: CREATE TABLE Employee ( ID int IDENTITY(1,1) PRIMARY KEY, LastName varchar(50) NOT NULL, FirstName varchar(50) ) 在这里,如果我插入任何数据,那么ID将自动递增1 如2014年1月22日,我插入了如下数据 雇员 1 Hank Kent 2 Kent Hank

我们可以在SQLServer2008中创建如下示例中的任何存储过程吗

我有一张桌子:

CREATE TABLE Employee
(
   ID int IDENTITY(1,1) PRIMARY KEY,
   LastName varchar(50) NOT NULL,
   FirstName varchar(50)
)
在这里,如果我插入任何数据,那么
ID
将自动递增1

如2014年1月22日,我插入了如下数据

雇员

1   Hank    Kent
2   Kent    Hank
但我要看的是,若系统日期发生变化,那个么第二天的标识将再次从1开始递增

例如,2014年1月23日,如果插入任何数据,则应如下所示

上一个表的值和

1   John    Bat 
2   Debbi   Meera

否,
ID
列中不能有重复的值,因为它是您的主键。但是,您可以将逻辑构建到触发器或其他约束中,以设置一个附加字段,可能称之为
DailyInsertOrder
,该字段在插入时自动更新

例如,您可以在
DailyInsertOrder
上创建一个默认约束,该约束调用一个UDF函数来查找插入中记录的“位置”。这还需要您保存创建记录的日期,可能是在datetime2
CreatedDate
字段中。现在,您正在将业务逻辑嵌入到表模式中,在我看来,这是一种糟糕的做法

相反,只需有一个默认为
SYSDATETIME()
CreateDate
字段,或者用
INSERT
触发器设置。然后,您可以使用排序
SELECT
语句进行查询,该语句按
CAST(createdateas date)
分组


如果没有意义,我可以进一步解释。

根据给定的场景,我认为通过硬代码,这是比我用Java语言更好的方法。

我认为,您需要一个解决方案。它不会是一个身份字段;标识字段为“无重复项”,您的方案将创建重复项。您不能对当前表执行此操作。主键必须是唯一的。