如果打开了一个事务,在commit或rollback前,其他用户也作同样的操作使用了相同的事务,那后面打开的这个在排队等待执行还是并发一起执行的?
我在事务中对一个表执行了insert操作,用IDDET_CURRENT取该表的最后ID有没有什么不妥?如果事务是排队的话,那IDET_CURRENT好象就没有问题,但如果是并发的话,返回的ID不就不一定正确了?
望会的人帮忙一下!

解决方案 »

  1.   

    1、是否排队或并发,要看对表加什么锁,研究不深,insert顶多是个行级锁
    2、用 SCOPE_IDENTITY( ) 取
      

  2.   

    谢谢回复,如果用scope_identity的话用不用使用前清0之类的?
      

  3.   

    scope_identity返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。
      

  4.   

    SCOPE_IDENTITY返回插入到同一作用域中的标识列内的最后一个标识值。一个范围是一个模块:存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则他们位于相同的作用域中。------------MSDN上的解释