有先后顺序的,如果你担心会出现脏读:
begin tran
....
commit tran
begin tran
....
commit tran
解决方案 »
- 经常要查询UNION ALL两表后的结果,用视图还是存储过程好,还是有其他便利的方法
- sqlserver2005 Management Studio express 里面怎么设置计划任务?
- 求一条SQL语句
- 高手来帮我下这个菜鸟
- 请问223549(22点35分49秒)怎么转为日期格式进行加减时间的计算啊
- 我读取xml数据插入数据库,但数据太多,插入的太多,频繁操作数据库,导致了占用cpu100%求解决方式
- 拆列 并分组加序号?
- 两个字段的值对换
- 页面 中文 显示为乱码,如何解决?(高手请进!)
- 横纵表引起的排序问题
- SQL server 2000 的硬件配置??
- sqlserver怎么处理大数据(BLOB)的?在线等待!!
出现脏读时:用
BEGIN TRANSACTION
...
COMMIT TRANSACTION
...
ROLLBACK TRANSACTION
SET TRANSACTION ISOLATION LEVEL READ COMMITTED --(默認)
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE第一種搶,誰先提交誰就勝
第二種,第一個用戶提交了的時候,別的用戶不能改也不能看.因為進行了鎖.
你可以看看以上四種級別.
1:
begin tran
update table set
col1 = col1 + 500
where ....select col1 from table
commit tran2:
begin tran
update table set
col1 = col1 - 100
where ....select col1 from table
commit tran
这样无论谁先谁后都无所谓,如果先执行1后执行2则显示1500然后显示1400
如果先执行2再执行1则先显示900后显示1400
反正都是1400