我正在使用 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 子句的情况下都会发生变化。 有没有好心人能告诉我这是什么原因?