怎么使SQL表中不连续的编号重新变连续

比如我有一个字段LineId(编号),插入数据后是1,2,3,4,5,但是在删除了第二个数据再重新插入一个数据就变成了1,3,4,5,6有什么办法能让再插入数据时编号变连... 比如我有一个字段LineId(编号),插入数据后是1,2,3,4,5,但是在删除了第二个数据再重新插入一个数据就变成了1,3,4,5,6 有什么办法能让再插入数据时编号变连续??
PS:不能删除原有的数据!!也不要让我手动改。。。更不要复制粘贴转载加道听途说!!!
如果有用再加50分!!!
二楼那位大哥这个函数怎么写??
展开
 我来答
百度网友1214fdcbb
2010-11-20 · TA获得超过1240个赞
知道小有建树答主
回答量:316
采纳率:0%
帮助的人:386万
展开全部
新增一列,先允许为空,然后update这列的值为rowNumber这样就是连续了,然后看看值是否正确,正确的话删除原来的列,然后把新列设为自增就完成了 ,至于二楼的方法实现也很简单:
declare @newmaxid int
select @newmaxid=max(id)+1 from table
insert into table (id) values(@newmaxid)
着巴叶q
2010-11-19 · 超过25用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:31.1万
展开全部
要看你的目的是什么,为什么要这样做。
1、如果纯粹是为了显示好看,可以在显示时单独1列输出程序给的序号(永远都是连续的),数据库里的编号根本不用显示它。
2、如果还需要使用这个编号作为参数,可以隐藏传递。
3、如果必须要显示它,它还在别的表中有引用,那么肯定不能随便修改它。
4、如果没表引用它,就是要它连续,也分为2种:a、新行使用编号2;b、345修改为234,新行使用5。如果是b,那么这个字段没用,可以删除了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
520江南之乡
2010-11-19 · TA获得超过505个赞
知道小有建树答主
回答量:175
采纳率:0%
帮助的人:80.1万
展开全部
要变连续,肯定是要对其他数据进行UPDATE操作的。所以转变思路,不要等它插入的时候处理成连续,在你删除的后就让它变连续。
写一触发器,等你删除一条记录时,获取条件记录的LineId,判断是否存在比
LineId的记录,如果存在,则将比删除记录LineId的所有LineId减1;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shenchaoliang
2010-11-19 · TA获得超过1163个赞
知道大有可为答主
回答量:810
采纳率:0%
帮助的人:1542万
展开全部
用的是什么数据库?我知道sql server 2005及以上版本可以用ROW_NUMBER()函数 新产生一列连续编号,再更新回去
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
木森耙耙
2010-11-19 · TA获得超过436个赞
知道小有建树答主
回答量:907
采纳率:0%
帮助的人:586万
展开全部
这个是因为你Lineid列用了 identity 列
这个identity 不论是插入失败还是成功都会+1

如果你想实现 当前ID + 1 那个写个函数吧 不用identity列
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式