PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jednoczesny proces wstawiania danych do bazy danych

Najprostszym sposobem wydaje się użycie poziomu izolacji transakcji „serializable”, który zapobiega fantomowym odczytom (inne osoby wstawiają dane, które spełniłyby poprzednią SELECT podczas transakcji).

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);

Istnieją również techniki, takie jak instrukcja Oracle „MERGE” – pojedyncza instrukcja, która „wstawia lub aktualizuje” w zależności od tego, czy dane tam są. Nie wiem, czy Postgres ma odpowiednik, ale istnieją techniki „udawania” – patrz np. Jak napisać INSERT Zapytania IF NOT EXISTS w standardowym SQL .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć prawie podobne rekordy w sql?

  2. Fluent NHibernate i PostgreSQL, SchemaMetadataUpdater.QuoteTableAndColumns — System.NotSupportedException:określona metoda nie jest obsługiwana

  3. Ograniczenie wyzwalania a sprawdzanie

  4. Jak zastąpić przechwyconą grupę wyrażeniem ocenianym (dodawanie wartości całkowitej do grupy przechwytywania)

  5. Wycofanie po błędzie w transakcji