sql >> Database teknologi >  >> RDS >> PostgreSQL

hvorfor postgres giver samtidig række opdateret fejl, når jeg låser hele tabellen eksplicit

Takket være @sudos kommentar ovenfor, hvis jeg flyttede udsagn som denne:

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;

så ser det ud til at undgå problemet, jeg har brugt store data (faktisk falske det med gentagne sløjfer gennem samme data). Bemærk, at det måske ikke er den mest effektive måde at gøre denne slags ting på, men det virker. Problemet med forsøget givet i spørgsmålet var, at låsen sandsynligvis kun var begrænset til den transaktion, den var defineret i, og derfor var oprettelsen af ​​funktion stadig uden for dets omfang, dvs. ikke låst, hvorfor konflikten dukkede op. Men alt ser fint ud nu.




  1. Aktiver 'xp_cmdshell' SQL Server

  2. Hvordan man ikke viser dubletter i SQL

  3. Hvorfor viser VS2010 oracle-forespørgselsvinduet ikke output

  4. Loop gennem form input arrays i php