您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> ACCESS >> 辅导 >> 正文    
  自动编号的字段在删除记录后编号不连续 【注册男护士专用博客】          

自动编号的字段在删除记录后编号不连续

www.nanhushi.com     佚名   不详 

  问题:

  自动编号的字段在删除记录后编号不连续
  比如原来有10条记录,删除其中第2条,序号2就变空号了
  当表中某条记录被删除后,如何使后续的记录自动重新编号? 

  回答:

  关于自动编号和压缩数据库
  你必须理解,自动编号(长整型)的目的不是为了使记录号连续,其用途有2个
  1、标识记录的唯一性
  2、标识记录的生成顺序
  基于上述原因,你想使用自动编号字段来表示连续的记录号本身这个思路就是错误的。

  如何表示连续的记录号有以下几个办法:
  1、再建立一个专门用来存放记录号的字段,比如 RecordNo
  添加记录时可以用 MAX(recordNO)+1 的方法。
  当要删除某条记录时,比如这条记录的recordNo=6,我们用

  delete from table where recordNo=6

  来做。这样就会产生空号,然后再用

  update table set recordno=recordno-1 where recordno>6

  即可

  2、在表中不存放记录号的数据,用sql查询自动生成

  select [id],a,b,c,(select count(*) from table table2 where table2.[id]<=table1.[id]) as recordno from table table1 order by [id]

  其中 [id] 字段为自动编号字段

  问题:

  access2000中 有一自动编号的字段ID,ID 已有值分别为1,2,3,4,5,6,7,将6,7删除后,再压缩数据库,再新加记录,在不同的电脑上会出现不同的情况如下:
  1,新ID 为6,7,8,9
  2,新ID 为8,9

  在ID为1,2,3,4,5,6,7的情况下,将4,5删除后,再压缩数据库,再新加记录,在不同的电脑上会出现不同的情况如下:
  3,新ID为4,5,然后是6(出错,因为是主键不能重复)
  4,新ID为8,9。。。
  请问哪中情况是正常的,其他不正常的原因是什么。谢谢!!

  回答:

  你说的几种情况全部属于正常

  1、自动编号是由 JET  引擎来设置的
  2、自动编号 会自动被作为主键,而且有不重复索引
  3、你可以不要将自动编号作为主键以及不要建立索引,将索引改为无
  4、自动编号的起始值和步进值都是可以用程序等方法更改的,不是固定的
  5、虽然你更改了起始值和步进值,但是如果新生成的值违反了“主键”或者“索引”的约束会产生错误
  6、默认情况下,即使删除了记录,这条记录的自动编号也不会恢复。

  以下是对情况的分析
  1、你使用了比如压缩修复、UPDATE、ALTER TABLE 等方法更改了初始值
  2、默认情况下就是这样
  3、因为使用了压缩修复等方法,导致初始值重新从4开始,但是增加到6的时候,原来记录里面已经存在6这个编号了,违反了主键约束,所以产生错误
  4、默认情况下就是这样。

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。