为什么SELECT SCOPE_IDENTITY()返回null?
问题描述:
在什么情况下SELECT SCOPE_IDENTITY()
返回null?为什么SELECT SCOPE_IDENTITY()返回null?
我这样做:
Set rs = cn.Execute("SELECT SCOPE_IDENTITY()", , adCmdText)
capture_id = rs.Fields(0)
,我越来越capture_id=null
答
更具体地说,SCOPE_IDENTITY()只返回在与SCOPE_IDENTITY()调用相同范围内生成的最新标识值。在您发布的示例中,SCOPE_IDENTITY()调用是该批处理中唯一的语句(因此是当前范围内的唯一语句),因此它将返回null。如果您想获取为特定表生成的最新标识值,请尝试IDENT_CURRENT('tablename')。这不受范围限制,它只是为您提供给定表格生成的最新身份值。
http://stackoverflow.com/questions/3526851/scope-identity-question – 2010-08-19 22:39:48
好,所以你不是说什么解决方案是...如何保持它的范围。我有同样的问题,我有一个插入尝试到一个临时表变量,并检查插入语句结束后的行的身份,它是空的。那么你怎么把它放在插入物的范围之内呢? – PositiveGuy 2012-05-25 15:12:46
对不起,我没有看到您的评论早些时候,但因为我在这里,我想我可能也会回应后代:)你需要SCOPE_IDENTITY()调用与INSERT语句在同一批处理。将所有代码放入存储过程并调用proc,或将所有语句放入一个临时批处理中并执行一次执行。 – 2015-06-04 00:36:12