HiveBrain v1.2.0
Get Started
← Back to all entries
snippetsqlCritical

How to insert or update using single query?

Submitted by: @import:stackexchange-dba··
0
Viewed 0 times
insertupdatequerysingleusinghow

Problem

I have a table test having columns id which primary key and auto incremented and name.
I want to insert a new record if annd only if there are no records.For example

input is id=30122 and name =john

if there are records with id 30122 then I have update the name column to john,if there are no records then I have insert a new record.

I can do using 2 queries like

select * from test where id=30122


if it has some records then I can use update test set name='john' where id=3012

or if it does not have records then I can use

insert into test(name) values('john')


But I wanted to use single query?

Can somebody tell if its possible?

Solution

You can try this

IF EXISTS(select * from test where id=30122)
   update test set name='john' where id=3012
ELSE
   insert into test(name) values('john');


Other approach for better performance is

update test set name='john' where id=3012
IF @@ROWCOUNT=0
   insert into test(name) values('john');


and also read this bad habits to kick on schema prefix

Code Snippets

IF EXISTS(select * from test where id=30122)
   update test set name='john' where id=3012
ELSE
   insert into test(name) values('john');
update test set name='john' where id=3012
IF @@ROWCOUNT=0
   insert into test(name) values('john');

Context

StackExchange Database Administrators Q#89696, answer score: 62

Revisions (0)

No revisions yet.