我有一个带有复合键的SQL表,ID(int,autogenerated)和TaxpayerID(varchar,用户输入它)。当用户注册时,他们输入纳税人ID&纳税人ID与ID结合成为主键。
通常在输入记录后,我将返回使用@@ Identity并将其返回到.NET应用程序中的Integer变量。然而,它似乎失败了,我认为因为它是复合键。
有没有办法只返回复合主键的PART? (在这种情况下,只是ID字段)
答案 0 :(得分:2)
建议返回SCOPE_IDENTITY()
。这将返回您的范围中创建的最后IDENTITY
值。我建议更喜欢SCOPE_IDENTITY()
,因为
SCOPE_IDENTITY和@@ IDENTITY返回当前会话中任何表中生成的最后一个标识值。但是,SCOPE_IDENTITY返回仅在当前范围内插入的值; @@ IDENTITY不限于特定范围。
在你的情况下,它有点混乱,但如果你正在寻找自动递增的IDENTITY
字段,这将为你做。桌上的PK并不重要。如果有一个标有IDENTITY
的字段,并且您希望将其返回,请在SCOPE_IDENTITY()
之后立即使用INSERT
。