sql >> Database >  >> RDS >> PostgreSQL

Gelijktijdig proces voor het invoegen van gegevens in de database

De eenvoudigste manier lijkt te zijn om het transactie-isolatieniveau 'serializable' te gebruiken, dat phantom reads voorkomt (andere mensen die gegevens invoegen die voldoen aan een eerdere SELECT tijdens uw transactie).

if (!conn.getMetaData().supportsTransactionIsolationLevel(Connection.TRANSACTION_SERIALIZABLE)) {
    // OK, you're hosed. Hope for your sake your drivers supports this isolation level 
}
conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);

Er zijn ook technieken zoals Oracle's "MERGE"-statement -- een enkele instructie die 'insert or update' doet, afhankelijk van of de gegevens aanwezig zijn. Ik weet niet of Postgres een equivalent heeft, maar er zijn technieken om het te 'faken' -- zie b.v. Hoe INSERT te schrijven IF NOT EXISTS-query's in standaard SQL .



  1. Hoe de sqlalchemy-verbinding in MySQL te sluiten

  2. MySQL LIKE %string% is niet vergevingsgezind genoeg. Kan ik nog iets gebruiken?

  3. Gegevens uit meerdere tabellen in één rij krijgen terwijl u enkele waarden aaneenvoegt

  4. Hoe pak je een willekeurig item uit een database in Django/postgreSQL?