我有一个表,其中一列是图像的路径,我需要为要插入的记录创建一个目录。
示例:
insert into Dummy values(CONCAT('a', (select SCOPE_IDENTITY() + 1)))
这样我可以确定文件夹名称始终有效且它是唯一的(两个记录之间没有冲突)。
问题是:我如何安全引用要插入的记录的当前ID?请记住,这是一个高度并发的环境,如果可能的话,我想避免多次访问数据库。
我尝试了以下内容:
config.baseUrl = http://some.internal.ip/site1/
和
config.absRefPrefix = /
第一个查询不安全,因为当运行1000个并发插入时,我得到了58个重复密钥'异常。
第二个查询无效,因为SCOPE_IDENTITY()为我怀疑的所有查询返回了相同的值。
我的替代方案是什么?
答案 0 :(得分:0)
使用OUTPUT子句
尝试使用临时表来跟踪插入的IDINSERT #temp_ids(someval) OUTPUT inserted.identity_column
这将从您的查询中获取所有插入的ID。 '插入'是安全的。