2010-08-19 52 views

回答

1

MSDN“的SCOPE_IDENTITY()函数将返回空值如果函数之前的任何INSERT语句到调用身份列出现在范围内。“

+0

http://stackoverflow.com/questions/3526851/scope-identity-question – 2010-08-19 22:39:48

+1

好,所以你不是说什么解决方案是...如何保持它的范围。我有同样的问题,我有一个插入尝试到一个临时表变量,并检查插入语句结束后的行的身份,它是空的。那么你怎么把它放在插入物的范围之内呢? – PositiveGuy 2012-05-25 15:12:46

+0

对不起,我没有看到您的评论早些时候,但因为我在这里,我想我可能也会回应后代:)你需要SCOPE_IDENTITY()调用与INSERT语句在同一批处理。将所有代码放入存储过程并调用proc,或将所有语句放入一个临时批处理中并执行一次执行。 – 2015-06-04 00:36:12

8

更具体地说,SCOPE_IDENTITY()只返回在与SCOPE_IDENTITY()调用相同范围内生成的最新标识值。在您发布的示例中,SCOPE_IDENTITY()调用是该批处理中唯一的语句(因此是当前范围内的唯一语句),因此它将返回null。如果您想获取为特定表生成的最新标识值,请尝试IDENT_CURRENT('tablename')。这不受范围限制,它只是为您提供给定表格生成的最新身份值。