使用“insert into select IDENT_CURRENT()”和“insert into select IDENT_CURRENT() from table”时 IDENT_CURRENT() 的值

时间:2021-04-06 14:07:44

标签: sql-server select identity

我正在使用 sql server,在使用 IDENT_CURRENT() 时遇到一个问题。

我的桌子是这样的:

ID、Ori-ID、公司、其他信息

1、1、1000001、xxx1

2、1、1000001、xxx2

3、3、1000002、yyy1

4, 1, , 1000001, xxx3

...

"ID" 被定义为 bigint 身份,"Ori-ID" 也是 bigint 但保留同一公司的第一个 ID。 每次发生变化时,都会创建一个不同ID但相同Ori-ID的新记录。(例如我们可以看到3条记录中的公司100001都是Ori-ID 1) 因此,我们可以通过检查相同的 Ori-ID 来检查公司的历史记录。

运行以下步骤后,结果与我预期的不一样,我想知道机制以及结果如何返回:

<块引用>

第 1 步: 运行“select IDENT_CURRENT('My Table')”

这将返回“5”。

<块引用>

第 2 步: 运行“插入我的表 select IDENT_CURRENT('My Table'), '100003','AAA';”

我可以得到如下结果:
ID、Ori-ID、公司、其他信息
6 , 6 , 100003 , AAA

<块引用>

第 3 步: 运行“Insert into My table select IDENT_CURRENT('My Table'), '100004',Other Table.some item from Other Table;”

我可以得到如下结果:
ID、Ori-ID、公司、其他信息
7 , 6 , 100004 , (其他项目)

对于第 3 步,我想我可以得到这样的结果:
ID、Ori-ID、公司、其他信息
7 , 7 , 100004 , (其他项目)

带有“7”的 Ori-ID 是我的预期结果。为了使其正确,我可以使用“插入到我的表中选择 IDENT_CURRENT('My Table')+1, '100004',Other Table.some item from Other Table;”相反,但我想知道为什么它返回不同的结果。

IDENT_CURRENT('My Table') 似乎在使用或不使用 from 子句的情况下都会发生变化。 有没有好心人能告诉我这是什么原因?

0 个答案:

没有答案
相关问题