1. 苏葳的备忘录首页
  2. 数据库

Sybase测试共享冲突的例子

sybase 事务数据库中的事务指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。下面是数据库事务处理一个挺好的例子,修改成Sybase格式:

create table testlock (id int)
insert into testlock values(0)

同时在两个窗口中执行代码:

begin tran
declare @id int
select @id=max(id) from testlock
while @id < 50000
 begin
 select @id = @id + 1
 insert into testlock values(@id)
 select @id=max(id) from testlock
 end
commit

执行完成后统计表数据,可看到加不加begin tran 有明显区别,若不加事务,会产生许多重复id,而加了事务,则不会重复:

select count(*) from testlock
select count(*) from testlock group by id having count(id)>1

表的锁和事务级别问题相当重要,需要时应加以研究。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/304.html

发表评论

邮箱地址不会被公开。 必填项已用*标注