我正在使用一个特定的数据库表,例如“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 子句和一个子查询来测试该行的存在,但这似乎很昂贵。这是一个逻辑“条件插入”操作的 2 个物理操作。SQL中有类似的东西吗?
仅供参考,我正在使用 HSQLDB 1.8