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

dlaczego postgres wyświetla jednocześnie błąd aktualizacji wiersza, gdy wyraźnie blokuję całą tabelę?

Dzięki powyższemu komentarzowi @sudo, jeśli przeniosłem takie stwierdzenia:

BEGIN;    
    SELECT pg_advisory_xact_lock(2142616474639426746);
    CREATE OR REPLACE FUNCTION my_function() ....
    --the whole function definition is wrapped by an advisory lock
    SELECT * FROM my_function();
COMMIT;

wtedy wydaje się, że unikam problemu, użyłem dużych danych (w rzeczywistości sfałszowałem je z powtarzającymi się pętlami przez te same dane). Pamiętaj, że może to nie być najskuteczniejszy sposób robienia tego typu rzeczy, ale działa. Problem z próbą podaną w pytaniu było to, że blokada była prawdopodobnie ograniczona tylko do transakcji, w której została zdefiniowana, a zatem tworzenie funkcji było nadal poza jej zakresem, tj. nie było zablokowane, stąd konflikt pojawiał się. Ale teraz wszystko wydaje się w porządku i elegancko.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres - Jak przekonwertować wiersz z zakresem int na wiersze pośrednie z poszczególnych wartości z tego zakresu?

  2. Jaki jest najbardziej elegancki sposób przechowywania znacznika czasu za pomocą nanosec w postgresql?

  3. Django:Jakie są najlepsze praktyki migracji projektu z sqlite do PostgreSQL?

  4. Patrząc na bazę danych na heroku

  5. Jak określić bieżącą działającą bazę danych dla skryptu inicjującego kontenera docker postgres?