在什么情况下SELECT SCOPE_IDENTITY()返回空值?我正在这样做:
SELECT SCOPE_IDENTITY()
Set rs = cn.Execute("SELECT SCOPE_IDENTITY()", , adCmdText) capture_id = rs.Fields(0)
我得到capture_id=null
capture_id=null
l7wslrjt1#
更 具体 地 说 , SCOPE _ IDENTITY( ) 仅 返回 在 与 SCOPE _ IDENTITY 相同 的 作用 域内 生成 的 最 新 标识 值( ) 调用 。 在 您 发布 的 示例 中 , SCOPE _ IDENTITY( ) 调用 是 批 处理 中 的 唯一 语句( 因此 是 当前 范围 内 的 唯一 语句 ) , 因此 它 将 返回 null 。 如果 您 希望 获取 为 特定 表 生成 的 最 新 标识 值 ,尝试 IDENT _ CURRENT ('tablename ' ) 。 这 不 受 作用 域 的 限制 , 它 只 提供 为 给定 表 生成 的 最 新 标识 值 。
vs3odd8k2#
根据MSDN,“如果SCOPE_IDENTITY()函数在作用域中对标识列执行任何INSERT语句之前被调用,则该函数将返回空值。”
sdnqo3pr3#
确保将“标识规范”设置为“yes”:
3条答案
按热度按时间l7wslrjt1#
更 具体 地 说 , SCOPE _ IDENTITY( ) 仅 返回 在 与 SCOPE _ IDENTITY 相同 的 作用 域内 生成 的 最 新 标识 值( ) 调用 。 在 您 发布 的 示例 中 , SCOPE _ IDENTITY( ) 调用 是 批 处理 中 的 唯一 语句( 因此 是 当前 范围 内 的 唯一 语句 ) , 因此 它 将 返回 null 。 如果 您 希望 获取 为 特定 表 生成 的 最 新 标识 值 ,尝试 IDENT _ CURRENT ('tablename ' ) 。 这 不 受 作用 域 的 限制 , 它 只 提供 为 给定 表 生成 的 最 新 标识 值 。
vs3odd8k2#
根据MSDN,“如果SCOPE_IDENTITY()函数在作用域中对标识列执行任何INSERT语句之前被调用,则该函数将返回空值。”
sdnqo3pr3#
确保将“标识规范”设置为“yes”: