sql >> Databasteknik >  >> RDS >> PostgreSQL

varför postgres ger samtidigt rad uppdaterade fel när jag låser hela tabellen explicit

Tack vare @sudos kommentar ovan, Om jag flyttade påståendena så här:

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;

då verkar det undvika problemet, jag har använt stora data (faktiskt fejkade det med upprepade loopar genom samma data). Observera att det kanske inte är det mest effektiva sättet att göra den här typen av saker, men det fungerar. Problemet med försöket som anges i frågan var att låset förmodligen bara var begränsat till transaktionen det definierades i och därför låg skapandet av funktion fortfarande utanför dess räckvidd, dvs inte låst, varför konflikten dök upp. Men allt ser bra ut nu.




  1. ta bort stoppord utan stam i postgresql

  2. Vad är MySQL-alternativet till Oracles NEXT_DAY-funktion?

  3. Django Migrations:A Primer

  4. Exekverar MySQL IN-satsen underfrågan flera gånger?