一张表accounttb
里面有2个字段:id(自增,主键),account(唯一索引)一个插入存储过程:sp_insert(v_in_account char(51));
即将输入的v_in_account字符串变量插入到account字段上,id随之自增长一个测试存储过程:sp_insert_test(v_in_start int, v_int_end int);
即调用sp_insert(),插入account%d(从v_in_start 到v_int_end ),比如是test1到test10现在我做了这么一个测试:
同时开2个CMD窗口 
用两个不同账号登陆 
同时进行call sp_insert_test(1,1000)按道理
id字段应该有从1-1000显示
但测试结果是总行数是1000,但中间id有没有等于6的,也有没有等于50的等等 最后一行的id为1920 而不是应该1000
即:
id   account
1     test1
2
3
4
5
7
8
.
.
.
49
51
.
.
.
1920   test1000不知道我说的大家明白不
谁能解释一下?

解决方案 »

  1.   

    account是唯一索引  肯定会有1000个account%d重复的啊  必然失败1000次
      

  2.   

    但我的理解是 account%d是不出现重复 两个CMD不管怎么insert 自增字段id不是应该还按照顺序排列的么
    为什么会出现不连续的 新手求解释 谢谢
      

  3.   

     account%d是不出现重复两个存储过程都会执行插入account1到account1000吧  肯定有10000个失败的  失败的sql的语句的id也是自增了   因为id会跳过去 你可以手动执行几条sql看看