Я использую конкретную таблицу базы данных, такую как структура данных «Set», то есть вы можете попытаться вставить одну и ту же строку несколько раз, но она будет содержать только один экземпляр. Первичный ключ является естественным ключом. Например, я хочу, чтобы следующие серии операций работали нормально, и чтобы в Оклахоме была только одна строка:
insert into states_visited (state_name) values ('Oklahoma');
insert into states_visited (state_name) values ('Texas');
insert into states_visited (state_name) values ('Oklahoma');
Я, конечно, получаю ошибку из-за дублирования первичного ключа при последующих вставках того же значения. Есть ли способ сделать вставку условной, чтобы эти ошибки не выкидывались? То есть только вставить, если естественный ключ еще не существует?
Я знаю, что мог бы сначала сделать предложение where и подзапрос для проверки существования строки, но, похоже, это будет дорого. Это две физические операции для одной логической операции «условной вставки». Что-нибудь подобное в SQL?
FYI. Я использую HSQLDB 1.8
.