我能否在SQL事务中使用插入后获得的OUTPUT inserted.identity值(或者甚至返回一个值)?
这是解释情况的伪代码
开始SQLTransaction(使用.NET SQLTransaction)
- 插入插入的表输出标识字段
- 使用上面命令的输出标识插入另一个表。
结束交易
我担心因为这是在一个事务中并且第一个插入查询实际上没有提交给数据库,所以第一个命令的输出标识列可能无效。
是否可以保证事务期间INSERT的输出标识与事务后提交的输出标识相同?或者SQL在事务期间是否禁止OUTPUT INSERTED.x?
答案 0 :(得分:0)
是的,OUTPUT
子句的行为与SCOPE_IDENTITY()
完全相同。
在第一个INSERT
语句之后,记录将被插入到数据库中,尚未提交。在这一点上,身份永远不会改变。
如果要回滚交易,身份将永远丢失(留下差距)