【发布时间】:2012-07-26 15:52:30
【问题描述】:
如果表中还没有记录,有哪些更好的技术可以将其插入到表中?
问题在于代码会检查符合条件的记录是否存在,如果不存在,则会创建一条。但是,第二个线程可能会同时出现并检查。
我们开始尝试使用 TABLOCKX,它最初可以工作,虽然感觉有点像使用大象枪,但我们也在考虑使用快照隔离,它在这种情况下不起作用,第二个事务可能刚刚到来一起阅读表格。
这是一个常见的问题,所以看起来应该有一个更标准的解决方案。请注意,此处不适合使用唯一索引,因为正在搜索的字段可能包含空值,并且 SQL Server 2005 不支持该上下文中的唯一约束。
【问题讨论】:
-
如果您使用 SQL Server 2008,那么您也可以查看MERGE
标签: multithreading tsql sql-server-2005 jdbc