请教一个算法题

Charlie_Peng 2013-07-24 02:28:52
数据库中的某一列index是int型
会对数据库坐插入删除操作,删除一条以后,新插入的记录 index的数据应该顺序插入 如何实现?

现在是
1
2
3
4
5
6
7

删除了2和5的两题条 现在插入一条那么插入的一条index为2
变成
1
2
3
4
6
7

我想用游标一个个遍历的话在有几万条数据的情况下是不是会变得非常慢?
有什么好的方法的解决呢?


...全文
180 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Charlie_Peng 2013-08-13
  • 打赏
  • 举报
回复
引用 6 楼 sz_haitao 的回复:
[quote=引用 5 楼 aa1382525 的回复:] [quote=引用 4 楼 sz_haitao 的回复:] 一般,id是用于外部关联的,不宜删后重用 一定要重用
select top 1 a.f+1 fempty
from tb a
left join tb b on a.f=b.f-1
where b.f is null
order by a.f
index列不是主键,只是升序的编码咧,删除按循序补齐[/quote] 这个sql有效吗?效率如何?[/quote] 好评 开始还没懂
haitao 2013-07-24
  • 打赏
  • 举报
回复
引用 5 楼 aa1382525 的回复:
[quote=引用 4 楼 sz_haitao 的回复:] 一般,id是用于外部关联的,不宜删后重用 一定要重用
select top 1 a.f+1 fempty
from tb a
left join tb b on a.f=b.f-1
where b.f is null
order by a.f
index列不是主键,只是升序的编码咧,删除按循序补齐[/quote] 这个sql有效吗?效率如何?
Charlie_Peng 2013-07-24
  • 打赏
  • 举报
回复
引用 4 楼 sz_haitao 的回复:
一般,id是用于外部关联的,不宜删后重用 一定要重用
select top 1 a.f+1 fempty
from tb a
left join tb b on a.f=b.f-1
where b.f is null
order by a.f
index列不是主键,只是升序的编码咧,删除按循序补齐
haitao 2013-07-24
  • 打赏
  • 举报
回复
一般,id是用于外部关联的,不宜删后重用 一定要重用
select top 1 a.f+1 fempty
from tb a
left join tb b on a.f=b.f-1
where b.f is null
order by a.f
---涛声依旧--- 2013-07-24
  • 打赏
  • 举报
回复
楼上的可以实现,但效率会比较低,没有触发器的高
Tosp2012 2013-07-24
  • 打赏
  • 举报
回复
引用
数据库中的某一列index是int型 会对数据库坐插入删除操作,删除一条以后,新插入的记录 index的数据应该顺序插入 如何实现? 如 现在是 1 2 3 4 5 6 7 删除了2和5的两题条 现在插入一条那么插入的一条index为2

IF OBJECT_ID('dbo.Ta') IS NOT NULL
  DROP TABLE dbo.Ta
Go

CREATE TABLE TA
 (
  ID INT NOT NULL 
 )
INSERT TA
SELECT 1 UNION
SELECT 3 UNION
SELECT 4 UNION
SELECT 6 UNION
SELECT 7 

SELECT * FROM TA

SELECT
  CASE
    WHEN NOT EXISTS(SELECT * FROM dbo.Ta WHERE id = 1) THEN 1
    ELSE (SELECT MIN(ID + 1)
          FROM dbo.Ta AS A
          WHERE NOT EXISTS
            (SELECT *
             FROM dbo.Ta AS B
             WHERE B.ID = A.ID + 1))
  END;
---涛声依旧--- 2013-07-24
  • 打赏
  • 举报
回复
建议用触发器实现,须另建立一个表tbDel来记录删除的序号index,重新插入后再从tbDel中相应的删除

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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