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

INSERT i serializacja transakcji w PostreSQL

Generalnie nie. Druga transakcja to tylko wstawianie, więc o ile nie ma unikalnego sprawdzenia indeksu lub innego wyzwalacza, który musi mieć miejsce, dane można wstawić bezwarunkowo. W przypadku unikalnego indeksu (w tym klucza podstawowego) zablokuje się, jeśli obie transakcje aktualizują wiersze o tej samej wartości, np.:

-- Session 1                           -- Session 2
CREATE TABLE t (x INT PRIMARY KEY);
BEGIN;
INSERT INTO t VALUES (1);
                                       BEGIN;
                                       INSERT INTO t VALUES (1);  -- blocks here
COMMIT;
                                       -- finally completes with duplicate key error

Sprawy są mniej oczywiste w przypadku aktualizacji, które mogą mieć wpływ na wstawienie przez inną transakcję. Rozumiem, że PostgreSQL nie obsługuje jeszcze "prawdziwej" serializacji w tym przypadku. Nie wiem, jak często jest obsługiwane przez inne systemy SQL.

Zobacz http://www.postgresql.org/docs/current/interactive/ mvcc.html



  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 wykonać kopię zapasową funkcji tylko w Postgresie

  2. Stawanie się Superużytkownikiem Bazy Danych - Engineyard

  3. Jak uruchomić testy w django z wykorzystaniem bazy danych z danymi?

  4. Zapowiedź repmgr 2.0RC2

  5. ActiveRecord próbuje połączyć się z niewłaściwą bazą danych za pomocą rbenv