W SQL DBMS podejście select-test-insert jest błędem:nic nie stoi na przeszkodzie, aby inny proces wstawił „brakujący” wiersz między select
i insert
sprawozdania. Zamiast tego zrób to:
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';
Powinieneś być w stanie przekazać ten cały tekst jako pojedyncze "zapytanie" do DBMS. Możesz rozważyć przekształcenie go w procedurę składowaną.