PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

जब मैं पूरी तालिका को स्पष्ट रूप से लॉक कर रहा हूं तो पोस्टग्रेस समवर्ती पंक्ति अद्यतन त्रुटि क्यों देता है?

उपरोक्त @ सूडो की टिप्पणी के लिए धन्यवाद, अगर मैं इस तरह के बयानों को आगे बढ़ाता हूं:

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;

तो ऐसा लगता है कि समस्या से बचने के लिए, मैंने बड़े डेटा का उपयोग किया है (वास्तव में इसे उसी डेटा के माध्यम से बार-बार लूप के साथ बना दिया गया है)। ध्यान दें कि इस तरह का काम करने का यह सबसे कारगर तरीका नहीं हो सकता है, लेकिन, यह काम करता है। प्रश्न में दिए गए प्रयास में समस्या यह था कि ताला शायद केवल उस लेनदेन तक ही सीमित था जिसमें इसे परिभाषित किया गया था और इसलिए फ़ंक्शन का निर्माण अभी भी इसके दायरे से बाहर था यानी लॉक नहीं था, इसलिए संघर्ष दिखाई दे रहा था। लेकिन, अब सब ठीक और बांका लगता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सूचना स्कीमा में Referential_constraints.unique_constraint_* कॉलम के लिए NULL मान

  2. रेल:संबंध के लिए अनुमति अस्वीकृत स्कीमा_माइग्रेशन

  3. Postgresql एडेप्टर (pg):सर्वर से कनेक्ट नहीं हो सका

  4. PostgreSQL - डेटाबेस का नाम बदलें

  5. विदेशी कुंजी प्रतिबंध वाले दो तालिकाओं की पंक्तियों को कैसे अपडेट करें