作者razor (=_=)
看板Database
标题Re: [SQL ] 恭贺开板顺便发问
时间Thu Jun 22 04:29:42 2006
※ 引述《forgmonkey (悲情城市之悲情程式猿)》之铭言:
: mysql下 primary key可以设定auto increase
: 他实作方式是会纪录一个数字
: 每次Insert一笔资料就会拿这个数字当primary key 并且递增之
: 但是我遇到一个问题... 今天我新增10个资料
: 就有主键1~10的这几笔资料
: 然後删掉4 ,6, 剩下8笔
: 然後再新增一笔 我希望他会成为主键4而不是11
: 能够在SQL的语法那边就解决掉嘛?
: 还是必须每次插入都要用程式检查最小的空栏是哪一个?
: 不过我想这种方式因该load太大吧?
这问题可简化为这样的问题:试查询缺漏号之前的最大流水号.
以你的例子来说,就是用一个查询找出(3,5)这组流水号集合.
这组流水号集合分别加1,变成(4,6),就是可填补的空缺号码.
上述查询可这样做:
Select pkID As x From table1
Where (Select count(*) From table1 Where pkID = x + 1) = 0
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.231.70.151