sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres infogar rad endast om radantalet är under en gräns

Det här problemet är känt som Phantom Read :

Försök

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

Transaktionsisoleringsnivån säkerställer att transaktioner endast infogar värden om antalet är mindre än 5.




  1. JDBC kan inte ansluta till mysql-databasen på openshift

  2. Hur optimerar man lagring och hämtning från en enorm lista i php?

  3. Massinlägg med SQLAlchemy ORM

  4. Skapa kolumn av typen dubbel precision[] med liquibase