我想让数据库的ID在删除中间一条后,后边的ID可以自动连续下来,怎么实现

我想让数据库的ID在删除中间一条后,后边的ID可以自动连续下来,怎么实现,第1张

ID 这字段是表中的 主键吧

那么 可能和其他表 有关联 如果改动了 就要出大问题了

当然了 要是单表的话你可以整

Delid = 26

delete from tablename where id = Delid

update tablename set id = id-1 where id > Delid

更新自增的主键值 在 mysql 行的通 其他的 数据库 没试过

-----------------------------------------------------

alter table tablename AUTO_INCREMENT = AUTO_INCREMENT - 1;

将表的 自增 ID 值减 1 即可

如果使用SQL的话,就使用游标来对数据进行遍历,

并且设置一个计数器,

然后对遍历的数据的序号字段与计数器进行比较,如果不相等,

说明这里的序号不连续,出现了断裂,应该将这个序号返回,

然后从这个序号开始,对后面所有的序号进行重新更新,

呵呵,也可以使用具体的编程语言来实现数据的遍历以及更新 *** 作。

呵呵,希望能有帮助,^_^

这样清空access数据后,自动编号的ID并不会从1开始自动编号(如果不是自动编号的,insert

1、2、3……就行了)

可以新建一个access数据库,然后:文件-获取外部数据-导入(选择要清空的数据库)-导入对象-选择要导入的数据表-单击“选项”-导入表(选择只导入定义)-确定,这样新建的数据表就从1开始编号了。

方法1:

truncate table 你的表名

//这样不但将数据全部删除,而且重新定位自增的字段

方法2:

delete from 你的表名

dbcc checkident(你的表名,reseed,0)

//重新定位自增的字段,让它从1开始

方法3:

如果你要保存你的数据,介绍你第三种方法,by QINYI

用phpmyadmin导出数据库,你在里面会有发现哦

编辑sql文件,将其中的自增下一个id号改好,再导入。

-------------------------

truncate命令是会把自增的字段还原为从1开始的,或者你试试把table_a清空,然后取消自增,保存,再加回自增,这也是自增段还原为1 的方法。

-----------

MySql数据库唯一编号字段(自动编号字段)

在数据库应用,我们经常要用到唯一编号,以标识记录。在MySQL中可通过数据列的AUTO_INCREMENT属性

来自动生成。MySQL支持多种数据表,每种数据表的自增属性都有差异,这里将介绍各种数据表里的数据列自增属性。

在MySQL数据库中,数据保存的顺序都是按照插入数据的先后顺序来插入的,而如果数据的ID编号也是按照先后顺序从小到大排序的,那自然也是按照ID来排序的。

如果是希望在查询的时候要按ID排序,只需要在查询语句后面添加:order by id 即可。

CREATE TABLE TestABC(

  FID  INT,

  FNAME CHAR(2)

);

INSERT INTO TestABC

SELECT 1,  'a1'  FROM dual UNION ALL

SELECT 1,  'a2'  FROM dual UNION ALL

SELECT 1,  'a3'  FROM dual UNION ALL

SELECT 2,  'b1'  FROM dual UNION ALL

SELECT 2,  'b2'  FROM dual UNION ALL

SELECT 2,  'b3'  FROM dual UNION ALL

SELECT 4,  'd1'  FROM dual UNION ALL

SELECT 4,  'd2'  FROM dual UNION ALL

SELECT 8,  'f1'  FROM dual UNION ALL

SELECT 8,  'f2'  FROM dual UNION ALL

SELECT 10, 'e1'  FROM dual UNION ALL

SELECT 10, 'e2'  FROM dual UNION ALL

SELECT 10, 'e3'  FROM dual;

-- 先查询, 模拟一个预期的结果

SELECT

  FID, FNAME,

  DENSE_RANK() OVER(ORDER BY FID) AS NEW_FID

FROM

  TESTABC;

       FID FNAM    NEW_FID

---------- ---- ----------

         1 a1            1

         1 a2            1

         1 a3            1

         2 b1            2

         2 b2            2

         2 b3            2

         4 d1            3

         4 d2            3

         8 f1            4

         8 f2            4

        10 e1            5

       FID FNAM    NEW_FID

---------- ---- ----------

        10 e2            5

        10 e3            5

已选择13行。

-- 实际去更新

UPDATE

  TestABC

SET 

  FID = (SELECT NEW_FID FROM

(SELECT

  FID, FNAME,

  DENSE_RANK() OVER(ORDER BY FID) AS NEW_FID

FROM

  TESTABC

)  NewTestABC  WHERE  TestABCFID = NewTestABCFID  AND  TestABCFNAME = NewTestABCFNAME);

-- 核对更新结果

SELECT  FROM TestABC;

       FID FNAM

---------- ----

         1 a1

         1 a2

         1 a3

         2 b1

         2 b2

         2 b3

         3 d1

         3 d2

         4 f1

         4 f2

         5 e1

       FID FNAM

---------- ----

         5 e2

         5 e3

已选择13行。

数据库表ID设置实现能自动增长的步骤如下(以TB_News表为例):

步骤1:首先检查你的新闻表ID列的数据类型,要设置为自增列,需要该列的数据类型为int或者bigint等数值类型

步骤2:打开sqlservermanagementstudio,右键点击你的新闻表,选择“设计”

步骤3:在第1步打开的表结构设置界面,点击你的列“ID”,在底下的列属性设置界面做如下设置:

进行完以上步骤,即可在该数据表中插入数据时,不用给ID列赋值,ID列的值会自动生成,并且该列的值会自动增长。

以上就是关于我想让数据库的ID在删除中间一条后,后边的ID可以自动连续下来,怎么实现全部的内容,包括:我想让数据库的ID在删除中间一条后,后边的ID可以自动连续下来,怎么实现、怎么把id的不连续 重排啊、access数据库清空后id重置1等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9803703.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存