
怎么使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分!!!
二楼那位大哥这个函数怎么写?? 展开
PS:不能删除原有的数据!!也不要让我手动改。。。更不要复制粘贴转载加道听途说!!!
如果有用再加50分!!!
二楼那位大哥这个函数怎么写?? 展开
6个回答
展开全部
新增一列,先允许为空,然后update这列的值为rowNumber这样就是连续了,然后看看值是否正确,正确的话删除原来的列,然后把新列设为自增就完成了 ,至于二楼的方法实现也很简单:
declare @newmaxid int
select @newmaxid=max(id)+1 from table
insert into table (id) values(@newmaxid)
declare @newmaxid int
select @newmaxid=max(id)+1 from table
insert into table (id) values(@newmaxid)
展开全部
要看你的目的是什么,为什么要这样做。
1、如果纯粹是为了显示好看,可以在显示时单独1列输出程序给的序号(永远都是连续的),数据库里的编号根本不用显示它。
2、如果还需要使用这个编号作为参数,可以隐藏传递。
3、如果必须要显示它,它还在别的表中有引用,那么肯定不能随便修改它。
4、如果没表引用它,就是要它连续,也分为2种:a、新行使用编号2;b、345修改为234,新行使用5。如果是b,那么这个字段没用,可以删除了。
1、如果纯粹是为了显示好看,可以在显示时单独1列输出程序给的序号(永远都是连续的),数据库里的编号根本不用显示它。
2、如果还需要使用这个编号作为参数,可以隐藏传递。
3、如果必须要显示它,它还在别的表中有引用,那么肯定不能随便修改它。
4、如果没表引用它,就是要它连续,也分为2种:a、新行使用编号2;b、345修改为234,新行使用5。如果是b,那么这个字段没用,可以删除了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要变连续,肯定是要对其他数据进行UPDATE操作的。所以转变思路,不要等它插入的时候处理成连续,在你删除的后就让它变连续。
写一触发器,等你删除一条记录时,获取条件记录的LineId,判断是否存在比
LineId的记录,如果存在,则将比删除记录LineId的所有LineId减1;
写一触发器,等你删除一条记录时,获取条件记录的LineId,判断是否存在比
LineId的记录,如果存在,则将比删除记录LineId的所有LineId减1;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用的是什么数据库?我知道sql server 2005及以上版本可以用ROW_NUMBER()函数 新产生一列连续编号,再更新回去
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是因为你Lineid列用了 identity 列
这个identity 不论是插入失败还是成功都会+1
如果你想实现 当前ID + 1 那个写个函数吧 不用identity列
这个identity 不论是插入失败还是成功都会+1
如果你想实现 当前ID + 1 那个写个函数吧 不用identity列
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询