如果表中还没有记录,那么将记录插入到表中的更好技术是什么?
问题是代码检查具有条件的记录是否存在,如果不存在,它会创建一个。但是,第二个线程可能会同时出现并检查。
我们开始尝试 TABLOCKX,它最初有效,虽然感觉有点像使用大象枪,但我们也在考虑使用快照隔离,它在这种情况下不起作用,第二个事务可以出现并读取桌子。
这是一个常见的问题,所以似乎应该有一个更标准的解决方案。请注意,此处不适合使用唯一索引,因为正在搜索的字段可能包含空值,并且 SQL Server 2005 不支持该上下文中的唯一约束。