怎么实现,删掉如图的这条记录,后面那条记录的的编号会自动调整为1010

西凉董卓 2016-05-18 05:04:43

...全文
262 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbdzjx 2016-05-19
  • 打赏
  • 举报
回复
之前写过类似的效果,删除按钮执行:记录一下这个ID,先delete这个ID,再update大于这个ID的记录减1就OK了。
  • 打赏
  • 举报
回复
引用 7 楼 charpin 的回复:
重新做一次循环加上去就可以啦,很多软件都会有这个行编号,如EXCEL
你看到的,更多地是单纯在客户端显示的编号,而不是数据库中的所谓“编号”。 数据库中的数据本身也无所谓编号,因为连“顺序”都是查询时用 order by 才能保证的。数据库中的记录的顺序是随机的,由底层结构来保证的(它会复用空闲的磁盘块,会重新组织b+树上的节点,这些才会影响数据排序)。 要对数据库进行一遍遍全局修改,也就是个人电脑上玩儿一个 Excel 表时的场景。而且还不在乎付出的时间。
  • 打赏
  • 举报
回复
刚学编程时任性就算了,但是对于工作者,如果设计中做出这类设计,是坑爹的,一定会被严厉地批一顿。 你将数据库操作软件的性能降低几百倍,锁住所有会话/事务,改变所有外键值,改变业务关键id值(造成的影响是所有用户手中的凭证都作废了),只是为了“技术”? 需要你再程序设计时把精力放到其它方面。
  • 打赏
  • 举报
回复
只要不是主键,而是用于显示的序号的话,那就是简单的重新算下,数据库持久化就算了,改主键这种事情虽然可以通过
update table
set id = id -1 
where id>1010
但主键能不改就不改,而且如果是自增的话,想改都改不了
姓小名白丶 2016-05-19
  • 打赏
  • 举报
回复
不推荐这种愚蠢的做法,如果是十几条数据还好说,如果是几十万,上百万的大数据,仅仅只为了删除一条而改变其他的几十万上百万数据,你自己想,数据库的资源也是有限的。
charpin 2016-05-19
  • 打赏
  • 举报
回复
重新做一次循环加上去就可以啦,很多软件都会有这个行编号,如EXCEL
csdnFUCKINGSUCKS 2016-05-19
  • 打赏
  • 举报
回复
删除归删除 你select的时候用row_number吧 这样可以保持有连续的编号
我叫小菜菜 2016-05-19
  • 打赏
  • 举报
回复
这是要颠覆整个世界啊!万一删第一条,那是不是后面几万条几十万条都要向前减1? 比如某个学校,有一个学生退学/转学了,全校的学生号都得跟着改变吗? 如果这种改变,没有实际含义,可以把最大的那条的序号,改为删掉的那个序号。 一万个士兵移动一步,跟队首快跑1万步,结果是一样的。
xuzuning 2016-05-19
  • 打赏
  • 举报
回复
只要编号列不是主键,可用触发器实现
Justin-Liu 2016-05-19
  • 打赏
  • 举报
回复
这个无法实现
charpin 2016-05-19
  • 打赏
  • 举报
回复
引用 10 楼 sp1234 的回复:
[quote=引用 7 楼 charpin 的回复:] 重新做一次循环加上去就可以啦,很多软件都会有这个行编号,如EXCEL
你看到的,更多地是单纯在客户端显示的编号,而不是数据库中的所谓“编号”。 数据库中的数据本身也无所谓编号,因为连“顺序”都是查询时用 order by 才能保证的。数据库中的记录的顺序是随机的,由底层结构来保证的(它会复用空闲的磁盘块,会重新组织b+树上的节点,这些才会影响数据排序)。 要对数据库进行一遍遍全局修改,也就是个人电脑上玩儿一个 Excel 表时的场景。而且还不在乎付出的时间。[/quote] 呵呵,你说的确实在理,看问题比较透彻。
Poopaye 2016-05-18
  • 打赏
  • 举报
回复
如果是数据库,建议不要有这种愚蠢的想法 如果只是普通的dgv,for把后面的记录刷新下

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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