Dans un SGBD SQL, l'approche select-test-insert est une erreur :rien n'empêche un autre processus d'insérer la ligne "manquante" entre votre select
et insert
déclarations. Faites ceci à la place :
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';
Vous devriez pouvoir transmettre ce texte entier en une seule "requête" au SGBD. Vous voudrez peut-être envisager d'en faire une procédure stockée.