Ce problème est connu sous le nom de Phantom Read :
Essayez
BEGIN;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
INSERT INTO mytable (myvalue, mykey) SELECT 'randomvalue', 1 WHERE
(SELECT COUNT(*) FROM mytable WHERE mykey = 1) < 5;
END;
Le niveau d'isolement des transactions garantira que les transactions n'inséreront des valeurs que si le nombre est inférieur à 5.