--标准的SQL Server处理方法(不知道楼主原来写的那个是什么数据库的??)declare @count int
begin tran
select @count=count(*) from aClass(tablockx) --加上表级锁,只允许一个用户处理
while @count<50
begin
insert students values(....)
set @count=@count+1
end
commit tran
begin tran
select @count=count(*) from aClass(tablockx) --加上表级锁,只允许一个用户处理
while @count<50
begin
insert students values(....)
set @count=@count+1
end
commit tran
楼主必须在select count(*) from aClass
语句上人为申请锁,该语句不会自动维护锁,所以即使在事务中也不能保证业务逻辑执行正确!不过,楼上的,我觉得不一定要用表锁,人为申请一个更新锁,也可以达到目的,只要所有执行该业务的都是通过这个程序来访问!
我想用java实现,不确定用什么数据库。
也许是我表达的不准确,这个问题是分两步的
1、先选出可加人数
2、添加一定数量的学员。
这两步的执行是分开的,也许要间隔几分钟,我怕到执行第二步的时候,可添加人数已经发生了变化(已经满了,或可加人数少于第二步输入的人数),这样,第二步就做不下去了。
我想知道这样的问题一般是怎么解决的呢?站在用户这个角度,怎样做能让客户接受呢?