日期:2014-05-18  浏览次数:20804 次

怎么加锁?
有个储存过程,先判断有没有插入过这条记录,之后再插入记录.但有机会会使得插入了两条一样的记录,可能是因为有两个用户同时执行储存过程,在另一个过程插入之前做了个判断,所以结果插入了两条记录.
有没有办法防止这情况?

------解决方案--------------------

BEGIN TRANSACTION

SELECT au_lname FROM authors WITH (TABLOCKX) ---查询比较
------------------使用表的排它锁。该锁可以防止其它事务读取或更新表,并在语句或事务结束前一直持有。


------在这里更新数据


--提交事务
COMMIT TRANSACTION