--标准的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

解决方案 »

  1.   

    同意楼上的写法!
    楼主必须在select count(*) from aClass
    语句上人为申请锁,该语句不会自动维护锁,所以即使在事务中也不能保证业务逻辑执行正确!不过,楼上的,我觉得不一定要用表锁,人为申请一个更新锁,也可以达到目的,只要所有执行该业务的都是通过这个程序来访问!
      

  2.   

    呵呵,谢谢五星上将的回答,使我倍感荣幸啊。
    我想用java实现,不确定用什么数据库。
    也许是我表达的不准确,这个问题是分两步的
    1、先选出可加人数
    2、添加一定数量的学员。
    这两步的执行是分开的,也许要间隔几分钟,我怕到执行第二步的时候,可添加人数已经发生了变化(已经满了,或可加人数少于第二步输入的人数),这样,第二步就做不下去了。
    我想知道这样的问题一般是怎么解决的呢?站在用户这个角度,怎样做能让客户接受呢?
      

  3.   

    当然也要谢谢pjy(古虫) ,呵呵差点忘了。