达梦数据库小技巧:手动给自增标识列插入指定值
在日常使用达梦数据库的过程中,我们经常会为数据表设置自增标识列(IDENTITY)。默认情况下,自增列由数据库自动生成数值,开发者无法手动写入、指定具体的标识值。
但在数据迁移、数据修复、补录历史数据等特殊业务场景下,我们需要自主指定自增列的数值。这时可以通过达梦数据库的 SET DENTITY_INSERT 语法,开启自增列手动插入权限,轻松实现自定义插入。
1.语法介绍
达梦数据库兼容标准语法,通过开关指令控制自增列手动写入权限,命令语法如下:
SET IDENTITY_INSERT 表名 ON:开启标识列手动插入模式,允许手动为自增列写入指定数值。
SET IDENTITY_INSERT 表名 OFF:关闭标识列手动插入模式,恢复数据库默认的自动自增机制。
2.下面以含自增列 PERSON_TYPEID 的 PERSON 表为例,操作步骤如下:
1)开启标识符手动插入模式前
2)开启当前表自增列手动插入权限
SET IDENTITY_INSERT OA.PERSON ON;
3)显式指定自增列及所有插入字段,写入自定义ID值
INSERT INTO OA.PERSON(PERSON_TYPEID, NAME, REMARK) VALUES (1001, ‘测试数据’, ‘手动指定自增ID’);
4)操作完成立即关闭权限
SET IDENTITY_INSERT OA.PERSON OFF;
说明:
1)IDENTITY_INSERT 属于会话级配置,仅对当前数据库连接窗口生效,新建会话、新的数据库连接不会受到任何影响。
2)同一个数据库会话中,同一时间只能为一张表开启 ON 状态。如果对第二张表开启该功能,前一张表的开启状态会自动失效,无法多表同时生效。
3)开启 ON 状态后,执行插入语句时,必须显式写出自增列字段名(例如:PERSON_TYPEID),并手动传入目标数值。绝对不能省略列名,否则会直接执行报错。
4)IDENTITY_INSERT 的 ON 和 OFF 必须成对搭配使用。如果开启 ON 后忘记关闭,会话会持续保留该特殊权限,后续数据表正常的自动自增插入操作会直接报错,导致业务数据无法正常写入。
文章
阅读量
获赞
