我在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开头。有什么建议吗?
答案 0 :(得分:0)
我想你的连接是开放的,因此,你的身份不会重置你的本地变量。这是一个例子。
DECLARE @TempTable TABLE
(
ID int IDENTITY(1,1) PRIMARY KEY,
ID2 int)
insert into @TempTable
values
(1),(2)
select * from @TempTable
delete from @TempTable
insert into @TempTable
values
(1),(2)
select * from @TempTable
现在,如果您使用GO
将其包装在自己的批处理中,您可能会发现这不会发生。实际上,您必须重新声明表变量。
DECLARE @TempTable TABLE
(
ID int IDENTITY(1,1) PRIMARY KEY,
ID2 int)
insert into @TempTable
values
(1),(2)
select * from @TempTable
go
DECLARE @TempTable TABLE
(
ID int IDENTITY(1,1) PRIMARY KEY,
ID2 int)
insert into @TempTable
values
(1),(2)
select * from @TempTable
对于#TempTable
,如果您没有明确删除#TempTable
或连接仍未打开,则相同。当然,对于实际表格,增量将与第一个例子类似地继续。