Conditional insert as a single database transaction in HSQLDB 1.8?
Posted
by Kevin Pauli
on Stack Overflow
See other posts from Stack Overflow
or by Kevin Pauli
Published on 2010-03-03T20:43:18Z
Indexed on
2010/03/13
10:05 UTC
Read the original article
Hit count: 246
I'm using a particular database table like a "Set" data structure, i.e., you can attempt to insert the same row several times, but it will only contain one instance. The primary key is a natural key. For example, I want the following series of operations to work fine, and result in only one row for Oklahoma:
insert into states_visited (state_name) values ('Oklahoma');
insert into states_visited (state_name) values ('Texas');
insert into states_visited (state_name) values ('Oklahoma');
I am of course getting an error due to the duplicate primary key on subsequent inserts of the same value. Is there a way to make the insert conditional, so that these errors are not thrown? I.e. only do the the insert if the natural key does not already exist?
I know I could do a where clause and a subquery to test for the row's existence first, but it seems that would be expensive. That's 2 physical operations for one logical "conditional insert" operation. Anything like this in SQL?
FYI I am using HSQLDB 1.8
© Stack Overflow or respective owner