记录id的简单问题,搞不明白了,在线等

u2m 2004-06-20 02:58:32
手动在表里删除了一些记录,例如最后的120~140条记录,然后用程序新增记录,
奇怪的是id没有从121起开始增加,却从141 开始增加的?
请问有什么办法使其从121起正确增加?
...全文
197 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
guanshangming 2004-06-20
  • 打赏
  • 举报
回复
自已写SQL语句修正非自动编号记录。
int DelID = 899;

String SqlStr = String("delete from Tablename where ID = ")+String(DelID);
ADOQuery1->SQL->Text = SqlStr;
ADOQuery1->ExecSQL();

String SqlStr = String("Update Tablename Set ID=ID-1 where ID>")+String(DelID);
ADOQuery1->SQL->Text = SqlStr;
ADOQuery1->ExecSQL();

zl555 2004-06-20
  • 打赏
  • 举报
回复
這個要求我覺得不可能實現,刪除數據後,讓後面的數據編號自動改變,除非完全用程序控制,數據庫本身好像沒有這個功能.
myy 2004-06-20
  • 打赏
  • 举报
回复
严重同意:matq2008(叶子.net)
u2m 2004-06-20
  • 打赏
  • 举报
回复
xxw10000:
你好,我确实是想不清楚这个问题了,麻烦你能否解释下这个简单的问题,
我也觉得应该不难,但会者不难,难者不会,,没办法
xxw10000 2004-06-20
  • 打赏
  • 举报
回复
这么简单的问题还说这么多干什么,真搞不懂这人脑子是不是诱逗啦
u2m 2004-06-20
  • 打赏
  • 举报
回复
自己生成也还是有这样问题啊,自己生成第三条记录id为3,但我把id为2的记录删掉,原本id为3的记录又不会自动变成2 啊
叶子哟 2004-06-20
  • 打赏
  • 举报
回复
太较劲了,又要用自增量,又想自己控制
其实你不用太在意这个id,你想要那个顺序号,自己在程序里生成就可以了
guanshangming 2004-06-20
  • 打赏
  • 举报
回复
在SQL SERVER中用
SET IDENTITY_INSERT Tablename ON
来允许将显式值插入表的标识列中。
执行该语句后,用INSERT INTO语句插入时可以直接控制标识列的值。
但与其这样做,不如该该列更改为非标识列,自已控制该列岂不更方便。

但其它数据库如Access中就不知道有没有更改的方法。
u2m 2004-06-20
  • 打赏
  • 举报
回复
因为现在的id字段是使用的自动编号,所以存在着编号会有1,2,3,4,10,11,12...等的现象,因为中间的几个记录删除了。
我的目的就是想不管如何操作,删除啊,增加啊,id编号始终是顺序连续的1,2,3,4,5,6,7,8,9....
huzhangyou 2004-06-20
  • 打赏
  • 举报
回复
另外我想知道你的最终目的
也许可以通过另外一种方式实现
huzhangyou 2004-06-20
  • 打赏
  • 举报
回复
然后增加的时候得到数再加一 并insert

如果删除的话就会有一些问题
需要做很大的处理
huzhangyou 2004-06-20
  • 打赏
  • 举报
回复
你可以使用
select count(*) from admin就能得到当前的总和
u2m 2004-06-20
  • 打赏
  • 举报
回复
还是有点糊涂,我要实现的功能主要就是一点

在增加的时候它会根据最后的id号增1,这个是系统支持的。
在删除记录的时候id号也可以随之更新,例如我删除了100-120之间的记录,原先的121条及以后记录会把id号自动使用目前的表,既121改为100,后边记录相应随之更改。

该如何实现????
huzhangyou 2004-06-20
  • 打赏
  • 举报
回复
引用
自动编号是不能用程序修改的,它自动向前滚动,你要实现你的目的只能不用自动编号


这个是可以的
他把你当前的编号存在数据库的系统表里面
如果修改系统表里面的数据就可以达到目的
huzhangyou 2004-06-20
  • 打赏
  • 举报
回复
引用
我删除了部分记录,那些id能否自动向前减去删除记录的数值呢?

这个需要你自己手工进行完成
使用

而使用手工的方式添加
就是每次添加得到当前的记录条数
然后插入的时候+1
这样就可以了
不过第二种的效率比较低

这样方法是一个很好的控制的方法
我的项目曾经这么做过

另外
引用
我不大明白以下的话,可否详细点说明下,多谢
你可以修改在该数据库里面的一个系统表的信息
它记录了某个自增自段当前的纪录
所以可以修改这个方式达到你的目的


我暂时没有找到修改的地方
肯定是有的
可以去sql server那里问问那里的大牛
他们肯定知道
guanshangming 2004-06-20
  • 打赏
  • 举报
回复
自动编号是不能用程序修改的,它自动向前滚动,你要实现你的目的只能不用自动编号
u2m 2004-06-20
  • 打赏
  • 举报
回复
我删除了部分记录,那些id能否自动向前减去删除记录的数值呢?
u2m 2004-06-20
  • 打赏
  • 举报
回复
我不大明白以下的话,可否详细点说明下,多谢
你可以修改在该数据库里面的一个系统表的信息
它记录了某个自增自段当前的纪录
所以可以修改这个方式达到你的目的

huzhangyou 2004-06-20
  • 打赏
  • 举报
回复
你可以修改在该数据库里面的一个系统表的信息
它记录了某个自增自段当前的纪录
所以可以修改这个方式达到你的目的

也可以不使用identity的方式
而使用手工的方式添加
就是每次添加得到当前的记录条数
然后插入的时候+1
这样就可以了
不过第二种的效率比较低
weill 2004-06-20
  • 打赏
  • 举报
回复
如果ID字段是系统自动生成的那种,你的这种现象是非常正常的。
这也就是系统自动生成的好处,同表中任何一条记录的此标志都不同。

如果,你实在想要把这个东东重来,那么,你只能手工在表中删除此字段,然后再建此字段,并把它重设为自动生成。

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧