注册
解决报错:仅当指定列列表,且SET IDENTITY_INSERT为ON时,才能对自增列赋值
技术分享/ 文章详情 /

解决报错:仅当指定列列表,且SET IDENTITY_INSERT为ON时,才能对自增列赋值

Dora 2024/04/17 2997 1 0

自增列方式

1、IDENTITY(1, 1) NOT NULL
2、AUTO_INCREMENT NOT NULL
自增列为系统维护,不应该多加干预,但由于业务需求需要对自增列进行修改等操作时,AUTO_INCREMENT更适合

IDENTITY

–创建测试表

CREATE TABLE  "T1"(
"ID" INT IDENTITY(1, 1) NOT NULL,
"NAME" VARCHAR(50),
NOT CLUSTER PRIMARY KEY("ID"));

–自增列插入数据报错

insert into t1(id) values ('666');
-2723: 仅当指定列列表,且SET IDENTITY_INSERT为ON时,才能对自增列赋值

–修改SET IDENTITY_INSERT t1 on;

SET IDENTITY_INSERT t1 on;
insert into t1(id) values ('666');
commit;
select * from   "T1";

image.png

但此种方式仅当前会话生效,实际应用使用并不方便

AUTO_INCREMENT

–创建测试表

CREATE TABLE  "T2"(
"ID" INT AUTO_INCREMENT NOT NULL,
"NAME" VARCHAR(50),
NOT CLUSTER PRIMARY KEY("ID"));

–插入数据

insert into t2(id,name) values ('666','张三');
insert into t2(id,name) values ('777','李四');
commit;
select * from   "T2";

image.png
–接着新增数据,id自增

insert into t2(name) values ('王五');
commit;
select * from   "T2";

image.png

当业务系统需要对自增列修改,插入指定数据时,使用AUTO_INCREMENT更为合适

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服