Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

sql query to insert values to auto increament column

I want to populate values for an auto-increment column when inserting values for a table from another table.

Here is query im using and it throws error:

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))          

Please let me know what my mistake is.

like image 703
user2514925 Avatar asked Feb 20 '26 23:02

user2514925


2 Answers

you need not to give values for Identity column, it is auto added, just exclude identity column form insert as:

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

If you really want to add Identity values manually try below SET statements.

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;
like image 77
Jatin Patel Avatar answered Feb 23 '26 20:02

Jatin Patel


You can turn ON or OFF the 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
like image 44
Sankar Avatar answered Feb 23 '26 18:02

Sankar



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!