日期:2014-05-17  浏览次数:21201 次

ASP提交数据时关于ID不连续的问题
现在ID是这样的情况

ID  
1
2
5
8
13
19

我想在ID不连续的情况下,下次加入数据主键ID会自动填补空缺
下次加入数据时ID应为3

这SQL语句该如何写呢,

------解决方案--------------------
自动增加的字段id是不能写的,所以你的要求是不能实现的,如果id字段没有特殊用途(它隐含的表征了生成的先后顺序),只是为了好看需要把它变成连续的,那可以创建一个结构相同的表,然后将原表按某个字段排序,一条一条复制过来。
以上只代表access,我也是菜鸟,意见仅供参考。
------解决方案--------------------
ID作为自增类型不可改变,如果你非得这样做也可以自己创建一个字段,
比如你当前的表为form,新增字段paladin,显式定义pcount,记录集对象为rs,用open方法执行
select count(*) as icount from [form]
pcount = rs( "icount ")获取
关闭记录集,注销RS,
然后把pcount录入paladin字段里就可以了

缺点:如果其中某记录被删除,将导致有相同的字段记录,
------解决方案--------------------
基于什么数据库?

SOLUTION1
===========================
如果支持STORE PROCEDURE,如Oracle , SQL Server,可以写一个函数
如果不支持,则在ASP中写函数

SOLUTION2
=======================
另建一个表.
SQL code
create table SEQNUM_MY (
    seqno    integer
)

------解决方案--------------------
select * into new_table from old_table 
truncate table tablename 
select * into old_table from new_table
------解决方案--------------------
自动增长的字段只能由数据库更新.鉴定完毕.
------解决方案--------------------
自动编号的字段类型是不允许改变的,只能另外设一个字段完全和那个字段一样,才可以自己操作改变。