「Set」データ構造のような特定のデータベーステーブルを使用しています。つまり、同じ行を複数回挿入することができますが、含まれるインスタンスは1つだけです。主キーは自然キーです。たとえば、次の一連の操作が正常に機能し、オクラホマの行が1つだけになるようにします。
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句とサブクエリを実行して、行の存在を最初にテストできることはわかっていますが、コストがかかるようです。これは、1つの論理的な「条件付き挿入」操作に対して2つの物理操作です。SQLでこのようなものはありますか?
参考までに、HSQLDB1.8を使用しています