SQL Server 为什么SELECT SCOPE_IDENTITY()返回空值?

iovurdzv  于 2022-11-21  发布在  其他
关注(0)|答案(3)|浏览(287)

在什么情况下SELECT SCOPE_IDENTITY()返回空值?
我正在这样做:

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

我得到capture_id=null

l7wslrjt

l7wslrjt1#

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

vs3odd8k

vs3odd8k2#

根据MSDN,“如果SCOPE_IDENTITY()函数在作用域中对标识列执行任何INSERT语句之前被调用,则该函数将返回空值。”

sdnqo3pr

sdnqo3pr3#

确保将“标识规范”设置为“yes”:

相关问题