sql-server - 如果我在插入失败后选择 SCOPE_IDENTITY() 会发生什么(SQL Server 2005)

标签 sql-server sql-server-2005

MSDN 文档对此并不完全清楚。或者也许我读得不够好。

如果我执行插入(可能插入零行),然后是

;SELECT SCOPE_IDENTITY()

然后通过ExecuteScalar()调用命令...

如果插入没有插入任何行,结果会怎样?

如果失败,我想停止,这样我就不会继续将子记录插入到错误或错误的父 ID。

最佳答案

如果没有插入 Identity,SCOPE_IDENTITY() 将返回 null,您可以通过将 SCOPE_IDENTITY() 分配给变量然后检查变量内容来检查指定的条件。

插图

Create Proc SomeInsertToFail(@ID int OUTPUT)
as
Begin
    Select @ID =  Scope_Identity()
End
Declare @SOMEID int
Exec SomeInsertToFail @SOMEID OUTPUT
Select @SOMEID  --This will yield null

关于sql-server - 如果我在插入失败后选择 SCOPE_IDENTITY() 会发生什么(SQL Server 2005),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/667764/

相关文章:

sql-server - 在 MSSQL 中组合 LTRIM 和 RTIM 以及 REPLACE 函数

asp.net - 对于一个存储过程调用,SQL 登录从 Web 应用程序失败

SQL Server 2005/2008 不使用动态 SQL 的带参数的 Group By 语句?

sql - 如何去除列中的冗余值?

sql - 查找任何列中具有空值的所有行

sql-server - 限制 SQL Server 中用户查询的大小和/或频率

sql - 如何在没有主键或 ID 字段的表中查找重复项?

.net - 是否有类似于 Sql Server 表的 FileSystemWatcher 之类的东西?

sql-server - 一旦结果集包含某个值,就退出递归公用表表达式

sql - 如何将未知数量的行连接到另一行?