达梦数据库,数据库重置主键id从1开始

news/2024/11/15 6:50:00/

一、前言

今天中国国寿XX项目XC环境达梦遇到id主键自增顺序不对的问题,那么如何修改一个表的自增主键顺序呢?下边通过具体测试案例进行深入分析,通过delete/update/truncate/alter观察数据的变换总结出结论,欢迎各位喜欢达梦数据的爱国人士一起研究学习一下。

二、delete/update/truncate/alter分别进行测试

1、创建测试表及基础测试数据。

创建测试表

--创建测试表,定义id列自增
create table dmtest (id int IDENTITY(1,1) primary key,name varchar(10));
--插入测试数据并提交
set identity_insert dmtest on
insert  into  dmtest values(1,'张三'),(2,'李四'),(3,'王五');
commit;
set identity_insert dmtest off
--插入测试数据
insert  into  dmtest values('张三'),('李四'),('王五');
commit;

查看结果:

        可以看出,设置列为主键自增不能重复,不需要赋值插入,默认从1自增。对自增列赋值需要设置SET IDENTITY_INSERT为ON时,才能对自增列赋值。命令如下:set identity_insert 表名 on;

如果指定id序列后不在指定,后续ID键值会根据目前最大值+1递增,如下图:

 2、delete操作主键自增变化。

 由此可见,delete删除之后再insert,id列会按照删除之前最大值+1进行自增,如果指定id大小插入后再insert也会按照删除之前最大值+1进行自增,因此delete不会改变id自增属性。

3、update 操作主键自增变化。

 此时update修改会报错,提示:行附近出现错误[-2664]:试图修改自增列[ID].因此,update无法对自增列进行修改。

4、truncate  操作主键自增变化。

 truncate 表之后发现自增ID序列被重置,充实初始化到建表时状态,从1开始,步长为1进行自增。但是数据丢失了,如果数据量特别大,truncate之后再进行insert势必会造成时间上的浪费。

5、删除主键属性后再添加,操作主键自增变化

 删除主键自增属性后再添加,无法重置属性,仍然是按照最近一次修改的最大值+1自增。

三、总结

        通过相关测试结论如下:

  1. delete删除之后再insert,id列会按照删除之前最大值+1进行自增,如果指定id大小插入后再insert也会按照删除之前最大值+1进行自增,因此delete不会改变id自增属性。

  2. update无法对自增列进行修改。

  3.  truncate 表之后发现自增ID序列被重置,充实初始化到建表时状态,从1开始,步长为1进行自增,但是数据丢失了。

总之如下:

        清空表清空表数据,新增数据时,主键仍然从未删除之前的最后一条数据开始增加。
        截断表清空表数据,新增数据时,主键从1开始,相当于以下的两条SQL。

四、解决方案

1、通过truncate table进行自增属性初始化递增,恢复到建表初始状态。

2、在不删除数据情况下如何进行ID自增主键初始化排序,从1开始。

手动指定序列号非自增。如下图:

 不删除数据进行序列自增从1开始。

 alter table dmtest drop id;alter table dmtest add id int IDENTITY(1, 1) not null primary key;

 结果如下图:

        这个可以不删除数据,但是会发生一个问题,就是ID,NAME列的顺序发生了改变,而且达梦不像MySQL那样支持添加字段可以指定在某个字段的前后,即 before、after指定添加列的位置。可能后续版本会新增这个功能。


http://www.ppmy.cn/news/526684.html

相关文章

菲涅尔圆孔衍射matlab完整程序分享

根据惠更斯 - 菲涅耳原理,光的衍射是光束内部的次波之间的相干叠加,衍射光波场的光振动符合菲涅耳积分公式。但直接运用菲涅耳积分公式计算衍射光场是很困难的。对于夫琅和费衍射(远场衍射),在光源和接收屏距离衍射屏均为无穷远的…

easycap002 usb采集卡驱动

easycap002 usb采集卡驱动是官方提供的一款USB驱动,本站收集提供高速下载,用于解决USB接口不能正常识别,无法正常使用的问题,本动适用于:Windows XP / Windows 7 / Windows 8 / Windows 10 32/64位操作系统。有需要的朋…

常见图像采集卡驱动、图像采集软件、开发例程下载地址

包含了一些常见采集卡的驱动、图像采集软件、开发例程 地址:下载链接

【GD32篇】驱动AD7616完成数据采集

1.AD7616介绍 1.1 概述: AD7616 是一款 16 位 DAS(数据采集系统) ,支持对 16 个通道进行双路同步采样。 AD7616 采用 5 V 单电源供电,可以处理 10 V 、 5 V 和2.5 V 真双极性输入信号 ,同时每对通道均…

linux串口卡驱动下载,pci串口卡万能驱动下载_pci串口卡万能驱动1.1 - 系统之家

万能PCI串口卡驱动程序,支持绝大多数的串口卡。支持WINDOWS/LINUX系统。支持98/me/2000/xp/vista/server系统。 运行PCISETUP.EXE安装程序,选择卡的类型,点击INSTALL安装。 安装方法 1.请选择卡的类型; 2.点击《INSTALL》按钮进行驱动安装; 3…

qnx系统下pxi多功能数据采集卡驱动程序开发

qnx系统下pxi多功能数据采集卡驱动程序开发 - 豆丁网

采集卡-4K60多功能USB3.0采集卡

4K60多功能USB3.0采集卡芯片方案,4K60Hz超高清输入/环出,最高支持4K60视频采集录制,USB33.0传输超低延迟,视频清晰流畅; 1,应用:户外直播,游戏直播,淘宝直播&#xff0c…

工业级数据采集卡

一 数据采集卡概念、作用、分类 数据采集卡的概念 将模拟信号转变为数字信号的设备 本公司系列中继器向各个用户提供专业的服务,模拟数据采集卡将模拟信号转变为数字信号的设备,实现用户的需求。 2 数据采集卡的作用 ①:模拟信号转变数字信…