SQL DBMSでは、select-test-insertアプローチは間違いです。別のプロセスがselect
の間に「欠落している」行を挿入することを妨げるものは何もありません。 およびinsert
ステートメント。代わりにこれを行ってください:
INSERT INTO mytable (color, brightness, size, age)
SELECT color, brightness, size, age
FROM mytable
WHERE NOT EXISTS (
select 1 from
from mytable
where color = 'X' and brightness = 'Y'
);
SELECT (color, brightness, size, age)
FROM mytable
WHERE color = 'X' AND brightness= 'Y';
そのテキスト全体を単一の「クエリ」としてDBMSに渡すことができるはずです。ストアドプロシージャにすることを検討することをお勧めします。