数据库的并发处理问题归纳

来源:互联网 发布:华为手机出现紧急数据 编辑:程序博客网 时间:2024/05/16 02:10

第一种方法: 

仅用数据库事物恐怕不能解决问题,应该是数据库事务+加排它锁,可以防止,脏读、不可重复读、幻读。

 

SQL Server 中可以:

BEGIN TRAN

SELECT @maxid = max(id)+1 FROM test(XLOCK,PAGLOCK) 

 

COMMIT TRAN 

 

XLOCK 使用排它锁并一直保持到由语句处理的所有数据上的事务结束时。使用PAGLOCK或TABLOCK指定该锁,保证其它查询被堵塞。

 

 

第二种方法:用数据库中用存储过程解决,借助数据库本身的并发控制机制

 

@newID int out

 

update sequence_table

set @newID = nowid + 1,

nowid = nowid + 1

where key = 'orderPrimarykey'

 

 

return @newID

原创粉丝点击