为什么SELECT SCOPE_IDENTITY()返回null?

时间:2010-08-19 22:28:54

标签: sql sql-server vba

SELECT SCOPE_IDENTITY()在什么情况下返回null?

我这样做:

Set rs = cn.Execute("SELECT SCOPE_IDENTITY()", , adCmdText)
capture_id = rs.Fields(0)

我得到capture_id=null

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:1)

根据MSDN,“如果在范围内出现任何INSERT语句进入标识列之前调用该函数,则SCOPE_IDENTITY()函数将返回空值。”