I en SQL DBMS er select-test-insert tilgangen en fejl:intet forhindrer en anden proces i at indsætte den "manglende" række mellem din select
og insert
udsagn. Gør dette i stedet:
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';
Du bør være i stand til at sende hele teksten som en enkelt "forespørgsel" til DBMS. Du vil måske overveje at gøre det til en lagret procedure.