PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Postgres inserisce riga solo se il conteggio delle righe è inferiore a un limite

Questo problema è noto come Phantom Read :

Prova

BEGIN;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
INSERT INTO mytable (myvalue, mykey) SELECT 'randomvalue', 1 WHERE
    (SELECT COUNT(*) FROM mytable WHERE mykey = 1) < 5;
END;

Il livello di isolamento delle transazioni garantirà che le transazioni inseriscano valori solo se il conteggio è inferiore a 5.