设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1721|回复: 9
打印 上一主题 下一主题

[宏/菜单/工具栏] 怎样才能保证所有的表中的ID自动编号一致?谢谢!

[复制链接]
跳转到指定楼层
1#
发表于 2003-4-26 23:57:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎样才能保证所有的表中的ID自动编号一致?谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2003-4-27 00:16:00 | 只看该作者
自动的,没有必要保证!
3#
 楼主| 发表于 2003-4-27 00:30:00 | 只看该作者
但是,我所有的表都建立了关系,现在各个表的自动编号不一样了,而且,我的自动编号没法再从0开始记,因为我删了几次,自动编号就一直变大了,表之间不一样!

我设计的子窗体中要保证所有的窗体都用一个ID号,怎么办?谢谢!!!
4#
发表于 2003-4-27 01:02:00 | 只看该作者
清空数据,然后压缩一下再打开,就ok!
5#
发表于 2003-4-27 01:15:00 | 只看该作者
不建议对关系字段使用自动编号,因为这会给数据恢复带来很大麻烦,建议使用长整型字段,
自定程序保证编号的连续与唯一.
6#
 楼主| 发表于 2003-4-27 02:48:00 | 只看该作者
谢谢指导!
那就是说我所有的表中有一个自动的ID,但是关系字段不一定是ID,我可以另设一个长整型的字段为主键,是吧:)
7#
发表于 2003-4-27 04:47:00 | 只看该作者
在数据库设计初期,就应该考虑到万一出错恢复和升级的问题.不要为了贪图编程方便而使用自动编号做关键字段.我碰到过好多以自动编号(长整自增)为关系的关键字段,结果在升级到 sqlserver,或者数据出错需要恢复的时候遇到主表id与副表连接id无法对应的问题.结果只能编程耗费大量的服务器资源进行重整运算将其恢复,数据量少还好,要是上十万上百万数据,要等上2-3天,痛苦啊.

如果情况允许,能改程序的话还是一次性用长整替换掉自增,长痛不如短痛

[此贴子已经被作者于2003-4-26 20:50:31编辑过]

8#
发表于 2003-11-2 16:48:00 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
9#
发表于 2003-11-3 08:42:00 | 只看该作者
以下是引用yfengs在2003-4-26 16:29:52的发言:
但是,我所有的表都建立了关系,现在各个表的自动编号不一样了,而且,我的自动编号没法再从0开始记,因为我删了几次,自动编号就一直变大了,表之间不一样!

我设计的子窗体中要保证所有的窗体都用一个ID号,怎么办?谢谢!!!


两位版主的建议,当然是很有道理,不过,如果你没有几百万条记录,我看你还是继续采用自动编号好了。你问题的实质是,你在各个表之间互相有关系的情况下,还是可以随意删除主键,你的数据能不乱么?再说了,自增ID是默认的,不表明你不可以用sql语句插入删除的键。所以,如果你只需要恢复几个键,没有必要制作主键生成程序,用sql语句将这些误删的键补进去就行了。

例如:键为1,2,3,4,5,6,7,8,9
你删除了3, 7,8,9。现在,要恢复3。那么就:
docmd.runsql "INSERT table (ID, column1,...) values (3, "xx",...)
其中ID就是你的自动编号字段。问题是,你要恢复7、8、9可以,但是新的自动插入行总是以10开始。
比较简单的方法,使用fk来恢复pk。做一个不那么复杂的sql语句,把子表的不同fk都选出来,主表里缺的就插一个。
今后记住了,不是自增的ID不好,而是你的操作不当。既然用了关系数据,就要严格按照关系来进行及联增删。
10#
发表于 2003-11-3 08:44:00 | 只看该作者
补充一句,我做的项目,很少有真正删除数据的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-20 22:18 , Processed in 0.095078 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表