资讯动态

达梦数据库-学习-70-IDENTITY转AUTO_INCREMENT

发布时间:2026/10/3 17:37:55 来源:尧图企业网站定制
目录一、环境信息二、背景描述三、操作步骤1、生成数据2、修改列属性3、删除列属性4、加列属性5、查询表数据6、全表插入数据7、单列插入数据8、查验数据一、环境信息名称值CPUX86操作系统CentOS Linux release 8.5.2111内存4G逻辑核数5DM版本9.1.0.26二、背景描述应用报错仅当指定列列表且SET IDENTITY_INSERT为ON时才能对自增列赋值。IDENTITY自增属性在插入数据时需执行SET IDENTITY_INSERT 模式名.表名 ON插入结束后需执行SET IDENTITY_INSERT 模式名.表名 OFF。但开发老师觉得这需要修改嵌入在应用中的代码推荐将IDENTITY转AUTO_INCREMENT因为AUTO_INCREMENT执行插入语句时无需执行额外语句但需添加唯一约束。三、操作步骤1、生成数据DROP TABLE IF EXISTS SUN; CREATE TABLE SUN (A INT IDENTITY(1,1), B INT); INSERT INTO SUN(B) SELECT LEVEL FROM DUAL CONNECT BY LEVEL 10; COMMIT;2、修改列属性SQL ALTER TABLE SUN MODIFY A INT AUTO_INCREMENT; ALTER TABLE SUN MODIFY A INT AUTO_INCREMENT; 第1 行附近出现错误[-2654]:表[SUN]已含有IDENTITY列. 已用时间: 2.798(毫秒). 执行号:0.3、删除列属性SQL ALTER TABLE SUN DROP IDENTITY; 操作已执行 已用时间: 16.888(毫秒). 执行号:606.4、加列属性SQL ALTER TABLE SUN ADD COLUMN A AUTO_INCREMENT ; ALTER TABLE SUN ADD COLUMN A AUTO_INCREMENT ; 第1 行附近出现错误[-2071]:AUTO_INCREMENT列必须为唯一性约束的一部分. 已用时间: 2.305(毫秒). 执行号:0.因为AUTO_INCREMENT属性必须和唯一约束组合使用所以在加AUTO_INCREMENT之前需加唯一约束。SQL ALTER TABLE SUN ADD CONSTRAINT UnqConsSun UNIQUE(A); 操作已执行 已用时间: 22.010(毫秒). 执行号:607. 或 ALTER TABLE SUN ADD CONSTRAINT PRIMARY KEY (A);当然加主键也是一样的。SQL ALTER TABLE SUN ADD COLUMN A AUTO_INCREMENT ; 操作已执行 已用时间: 16.305(毫秒). 执行号:608.5、查询表数据SQL SELECT * FROM SUN; 行号 A B ---------- ----------- ----------- 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 10 10 10 10 rows got 已用时间: 4.776(毫秒). 执行号:610.6、全表插入数据INSERT INTO SUN(A,B) VALUES(100,5); COMMIT;正常插入无报错无需像IDENTITY执行额外语句。7、单列插入数据INSERT INTO SUN(B) SELECT LEVEL FROM DUAL CONNECT BY LEVEL 1; COMMIT;8、查验数据SQL SELECT * FROM SUN; 行号 A B ---------- ----------- ----------- 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 10 10 10 11 100 5 行号 A B ---------- ----------- ----------- 12 101 1 12 rows got 已用时间: 0.377(毫秒). 执行号:617.会从最大值的下一个值开始插入。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑