【发布时间】:2014-11-26 12:02:06
【问题描述】:
我想从一个表中选择值到另一个表中,并让每一行插入一个唯一的日期时间条目。我遇到的问题是 GETDATE() 或 SYSUTCDATETIME() 函数似乎不够快,而且我收到重复的日期时间条目。
例如 创建表#T1 (tnum int)
insert into #T1 select 1
insert into #T1 select 2
insert into #T1 select 3
create table #T2
(
Id int identity(1,1),
tnum int,
entrydate datetime
)
insert into #T2 SELECT #T1.tnum, getDate() FROM #T1
select * from #T2
这会导致以下结果
1 1 2014-10-01 11:14:15.673
2 2 2014-10-01 11:14:15.673
3 3 2014-10-01 11:14:15.673
我的表格设计使用 datetime 列作为唯一索引的一部分,我需要它们是唯一的。我想要的结果会像
1 1 2014-10-01 11:14:15.673
2 2 2014-10-01 11:14:15.674
3 3 2014-10-01 11:14:15.675
我使用的是 Microsoft SQL Server 2008。
【问题讨论】:
-
"GETDATE() 或 SYSUTCDATETIME() 函数似乎不够快,我收到重复的日期时间条目。"您的意思不是看起来太快,因为您得到重复的日期时间吗?听起来您正在尝试将日期时间用作主键或类似的,这是有原因的吗?
-
为什么不用TimeStamp字段?
-
然后修正你的桌子设计。
-
这个例子可能过于简化来定义我的问题,但我想要一个输入日期,它将成为自然索引的一部分(注意我不是指主键)。不应该有任何理由添加诸如序列之类的列,其唯一目的是使行独一无二。我的问题的主要部分仍然存在 - 我如何插入唯一的日期时间条目。这不是一个表格设计问题。
-
可能不是数据设计问题,而是数据设计问题。
标签: sql-server tsql