会自动的加锁,你不需要自己做,你只要检测事务执行是否成功,成功执行
commit,失败执行rollback就行了,数据的一致性也就解决了
commit,失败执行rollback就行了,数据的一致性也就解决了
解决方案 »
- 谁帮我看看下面sql 如何优化一下
- sql排序
- 请教存储过程的一个参数传来:AAA|BBB|CCC,如果读出.....请看内容
- 大家帮帮忙啊,是安装SQL2000的问题,紧急中......
- 元组 not int 集合 如: where (1,2) not int (select a,b from my_table)
- 急~~~~~求助汇总报表 急~~~~~
- 求教,SQLSERVER中编程实现不同表相同字段下的数据替换问题
- 关于多数据库查询的问题!
- 用SQL语句如何查看表结构,如何得到sp_helpuser返回 的结果
- 数据库备份文件40M,数据库还原后.MDF文件变成400M,.LDF文件要2.4G
- WinXP 中不能安装SQL Server 2000 企业版...
- 如何解决数据库表的并发问题
select from (updlock)
后面还要nolock,updlock,tablock这些东西干什么用?
一般的系统不大使用
比如事务A select一个数据项,(共享锁是不是在select完后马上释放?)在它更新这个数据项之前,另一个事务B能不能读取或修改修改这个数据项?
实在是疑惑,请大家帮帮忙!
>>比如事务A select一个数据项,(共享锁是不是在select完后马上释放?)
一旦已经读取数据,便立即释放资源上的共享 (S) 锁,除非将事务隔离级别设置为可重复读或更高级别,或者在事务生存周期内用锁定提示保留共享 (S) 锁。
也就是说如果事务隔离级别设置为可重复读或更高级别,或者在事务生存周期内用锁定提示保留共享 (S) 锁,那就要在事务提交时释放,否则,在查询完成时释放。
>>在它更新这个数据项之前,另一个事务B能不能读取或修改修改这个数据
>>项?
资源上存在共享 (S) 锁时,任何其它事务都不能修改数据。
也就是说如果事务隔离级别设置为可重复读或更高级别,或者在事务生存周期内用锁定提示保留共享 (S) 锁,那事务B能读取这个数据项但是不能修改删除这个数据项,否则可能会在事务A的SELECT和UPDATE的间隙事务B可以修改这个数据项,但是一般这个间隙是很短的,不好测试。