有没有办法只返回复合主键的PART?

时间:2010-10-06 17:19:40

标签: sql-server tsql

我有一个带有复合键的SQL表,ID(int,autogenerated)和TaxpayerID(varchar,用户输入它)。当用户注册时,他们输入纳税人ID&纳税人ID与ID结合成为主键。

通常在输入记录后,我将返回使用@@ Identity并将其返回到.NET应用程序中的Integer变量。然而,它似乎失败了,我认为因为它是复合键。

有没有办法只返回复合主键的PART? (在这种情况下,只是ID字段)

1 个答案:

答案 0 :(得分:2)

建议返回SCOPE_IDENTITY()。这将返回您的范围中创建的最后IDENTITY值。我建议更喜欢SCOPE_IDENTITY(),因为

  

SCOPE_IDENTITY和@@ IDENTITY返回当前会话中任何表中生成的最后一个标识值。但是,SCOPE_IDENTITY返回仅在当前范围内插入的值; @@ IDENTITY不限于特定范围。

在你的情况下,它有点混乱,但如果你正在寻找自动递增的IDENTITY字段,这将为你做。桌上的PK并不重要。如果有一个标有IDENTITY的字段,并且您希望将其返回,请在SCOPE_IDENTITY()之后立即使用INSERT