sql 查询以将值插入自动递增列

sql query to insert values to auto increament column

您好,当从另一个 table 为 table 插入值时,我想填充自动增量列的值。下面是我正在使用的查询,它会抛出错误

create table test12
(
Id int,
name varchar(255),
dept varchar(255)
)

insert into test12 values(1,'f','cs'),(2,'b','cse'),(3,'c','cs'),(4,'d','cse'),(5,'e','cs'),(6,'f',null)

select * from test12                                                            

create table test34
(
seq int identity(1,1) not null,
name varchar(255) not null,
dept varchar(255) default('cs')
)
insert into test34(seq,name,dept) values 
(1,(select name from test12),
(select case when dept='cse' then 'Y' else 'N' end as dept from test12))          

请告诉我错误是什么

您可以将ONOFF转为IDENTITY_INSERT

SET IDENTITY_INSERT test34 ON

insert into test34(seq,name,dept) values 
(1,(select name from test12),
(select case when dept='cse' then 'Y' else 'N' end as dept from test12))

SET IDENTITY_INSERT test34 OFF

您无需为标识列提供值,它是自动添加的,只需排除标识列形式插入为:

INSERT INTO test34 (name, dept) 
SELECT 
    name,
    CASE WHEN dept = 'cse' THEN 'Y' ELSE 'N' END AS dept 
FROM test12

如果您真的想手动添加标识值,请尝试以下 SET 语句。

SET IDENTITY_INSERT test34 ON;

INSERT INTO test34 (seq, name, dept) 
SELECT 
    ID
    name,
    CASE WHEN dept = 'cse' THEN 'Y' ELSE 'N' END AS dept 
FROM test12

SET IDENTITY_INSERT test34 OFF;

无需为自增列自动插入值,它会自动生成值。

insert into test34(name,dept) 
select name, Case when dept='cse' then 'Y' else 'N' end as dept from test12