19.报错“仅当指定列列表,且 SET IDENTITY_INSERT 为 ON 时,才能对自增列赋值”
向达梦数据库插入语句报错:“仅当指定列列表,且 SET IDENTITY_INSERT 为 ON 时,才能对自增列赋值”
·
1.现象
在向达梦数据库导入 my_table.sql 文件执行insert语句时,报错:仅当指定列列表,且 SET IDENTITY_INSERT 为 ON 时,才能对自增列赋值。
2.原因
达梦数据库默认主键 ID 是自增的,不允许重复插入自增主键列;默认配置项 IDENTITY_INSERT 值为 OFF,即自增长列是系统自动处理的,不需要指定数值,也指定不了。所以只有将 IDENTITY_INSERT 设置为 ON 时,自增长列才可以指定一个值。
3.尝试解决
(1)在达梦连接工具的控制台 执行命令 set IDENTITY_INSERT my_table ON;
(2)向my_table表导入文件my_table.sql
通过如上操作,结果仍然报错:仅当指定列列表,且 SET IDENTITY_INSERT 为 ON 时,才能对自增列赋值。
4.最终解决
查阅资料说,将 IDENTITY_INSERT 设置为 ON 只对当前会话有效。所以,如上的设置并不能解决问题。 最终解决如下,在insert语句的首尾进行ON和OFF的设置;
set IDENTITY_INSERT my_table ON;
insert my_table(id,key1,key2) values (1,'value1','value2');
insert my_table(id,key1,key2) values (2,'value3','value4');
insert my_table(id,key1,key2) values (2,'value5','value6');
.....
set IDENTITY_INSERT my_table OFF;
commit;
更多推荐


所有评论(0)