多次SQL插入后的标识列值的依赖关系

时间:2009-07-28 17:23:32

标签: sql insert identity insert-id

如果下一个是正确的: 有多个插入的SQL字符串(使用存储过程):

“EXEC SPInsertData ... EXEC SPInsertData ... EXEC SPInsertData ...”

每个新记录的标识列中的id(自动递增)小于下一个记录的id。

E.g。执行给定的SQL字符串后,第一条记录的id小于第二条记录的id,其id小于第三条记录的id?

2 个答案:

答案 0 :(得分:1)

是的,如果它是一个正确的自动递增标识列

答案 1 :(得分:0)

从本质上讲,自动增量会随着每个插入量的增加而前进。

MS SQL Server提供了一种创建逆序的方法。看看这里

create table #test
(
    TestId INT IDENTITY (2, -1),
    DateTimeStamp   DateTime
)
GO
INSERT INTO #test (DateTimeStamp) Values (GETDATE());
INSERT INTO #test (DateTimeStamp) Values (GETDATE());
INSERT INTO #test (DateTimeStamp) Values (GETDATE());
INSERT INTO #test (DateTimeStamp) Values (GETDATE());
INSERT INTO #test (DateTimeStamp) Values (GETDATE());
INSERT INTO #test (DateTimeStamp) Values (GETDATE());
INSERT INTO #test (DateTimeStamp) Values (GETDATE());
INSERT INTO #test (DateTimeStamp) Values (GETDATE());
GO
SELECT * FROM #test

结果:

TestId      DateTimeStamp
2           2009-07-28 15:02:09.200
1           2009-07-28 15:02:09.200
0           2009-07-28 15:02:09.200
-1          2009-07-28 15:02:09.200
-2          2009-07-28 15:02:09.203
-3          2009-07-28 15:02:09.203
-4          2009-07-28 15:02:09.203
-5          2009-07-28 15:02:09.207