【发布时间】:2017-08-29 19:04:54
【问题描述】:
我在 SQL 2014 中有一个临时表。在这个表变量中我声明了一个标识列。
DECLARE @TempTable TABLE
(
ID int IDENTITY(1,1) PRIMARY KEY
, IncidentResolvedOn date
, IncidentCreatedOn date
, IncidentClosedOn date
, TaskAssigned date
, TaskCompleted date
, TaskID float
, IncidentTeamID int
, TotalDaysOutstanding int
, TierInfo varchar(15)
, Task_NoTask varchar(15)
, Tier_2_Days_Outstanding int
, Tier_1_Days_Outstanding int
, DaysToResolve int
, BadDays int
, StartDate date
, EndDate date
)
当我运行查询的其余部分时,ID 列有时不是以 1 开头,而是以某个随机数开头。下面的代码是我用来插入此表变量的代码。
INSERT INTO @TempTable(IncidentResolvedOn, IncidentCreatedOn, IncidentClosedOn,TaskAssigned, TaskCompleted, TaskID, IncidentTeamID )
SELECT [Incident Resolved On]
, [Incident Created On]
, [Incident Closed On]
, [Task Assigned On]
, [Task Completed On]
, [Task ID]
, IncidentTeamID
FROM HEATData
这发生在表变量和临时表中。我以前从未见过这种情况。通常,当我使用 IDENTITY(1,1) 短语时,无论我创建该表多少次,它总是以 1 开头。有什么建议吗?
【问题讨论】:
-
如果您从临时表中选择,并按 ID 排序 - 第一个值会得到什么?
-
有没有可能是在创建表之后,你在插入行,删除它们,然后再次插入,并期望第二次插入以 1 开头?
-
有时,如果您运行失败的插入操作,序列会中断,就好像使用了失败的插入 id。
-
我想知道,如果这是一个变量并且列是一个标识,为什么它是 1 还是其他什么都重要?
-
@Lamar 不是有时,而是每次。标识是尝试插入次数的运行计数。即使由于违反约束或其他原因导致插入失败,它也将始终在插入中递增。
标签: sql sql-server identity