I en SQL DBMS är metoden select-test-insert ett misstag:ingenting hindrar en annan process från att infoga den "saknade" raden mellan din select
och insert
uttalanden. Gör så här istället:
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 kunna skicka hela texten som en enda "fråga" till DBMS. Du kanske vill överväga att göra det till en lagrad procedur.