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

SQL Server 2000 关于行锁定问题
我最近遇到一个问题,关于rowlock锁定问题。
一个这样的表
学号                               积分
200701                           13
200702                           16
200703                           10
由于学生们到期末考试之后,如果及格了,老师就会自动在系统上给这个学生输入这门科的积分。但是,学生学的科目很多。不只这一门。各科老师可能会出现同时去读取同一个学生的积分同时更新。但是如果这两个老师都取到13的话,更新完毕之后,必定会少其中一科的积分。
但是其他很多老师也要更新这个表。
我们有一个函数里面就是Select完了之后,接着Update更新这个学生的积分。
在Select到Update之间,我只想锁定一行。不想锁定表。
希望各位大虾,帮帮我。

------解决方案--------------------
SELECT * FROM YourTable WITH (ROWLOCK)

------解决方案--------------------
update 表名 WITH (ROWLOCK)
set col1= ' '
where 条件.......
------解决方案--------------------

begin tran--事务的方式

只要事务没有提交会等待