SQLTransaction:检索范围内插入的标识

SQLTransaction: Retreive Inserted Identities In Scope

我能否使用在 SQL 事务期间插入后获得的 OUTPUT inserted.identity 值(或者甚至 return 一个值)?

这是解释情况的伪代码

开始SQL交易(使用.NET SQL交易)
- Insert into table inserted
的输出标识字段 - 使用上述命令的输出标识插入另一个 table。
结束交易

我担心由于这是在一个事务中,并且第一个插入查询实际上并没有提交到数据库,所以第一个命令输出的标识列可能无效。

是否可以保证事务期间INSERT 的输出标识与事务后提交的相同?还是 SQL 在交易期间禁止 OUTPUT INSERTED.x?

是的,OUTPUT 子句的行为与 SCOPE_IDENTITY() 完全相同。

在第一个 INSERT 语句之后,记录将被插入到数据库中,只是尚未提交。至此身份永不改变

但是,如果要回滚事务,身份将永远丢失(留下间隙)