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

MERGE को क्रमबद्ध कैसे करें

आप जो अपवाद देख रहे हैं वह सख्त क्रमबद्धता का उपयोग करने का प्रत्यक्ष परिणाम है। यदि आपके पास एक से अधिक लेन-देन एक साथ सक्रिय हैं, तो प्रत्येक लेन-देन सेट करें Isolation LEVEL SERIALIZABLE के साथ शुरू होता है, जब उनमें से कोई भी अन्य करता है तो उसे ORA-08177 मिलेगा। इस तरह सख्त क्रमांकन लागू किया जाता है - डेटाबेस किसी भी सत्र में ORA-08177 फेंकता है, जो कि ISOLATION LEVEL SERIALIZABLE से शुरू होता है यदि कोई अन्य लेनदेन एक तालिका में होता है जिसे क्रमबद्ध सत्र की आवश्यकता होती है। इसलिए, मूल रूप से, यदि आपको वास्तव में सख्त क्रमांकन की आवश्यकता है, तो आपको ORA-08177 को समझदारी से संभालना होगा, जैसा कि निम्नलिखित में है:

DECLARE
  bSerializable_trans_complete  BOOLEAN := FALSE;
  excpSerializable              EXCEPTION;
  PRAGMA EXCEPTION_INIT(excpSerializable, -08177);
BEGIN
  <<SERIALIZABLE_LOOP>>
  WHILE NOT bSerializable_trans_complete
  LOOP
    BEGIN
      SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

      MERGE ...; -- or whatever

      COMMIT;

      bSerializable_trans_complete := TRUE;  -- allow SERIALIZABLE_LOOP to exit
    EXCEPTION
      WHEN excpSerializable THEN
        ROLLBACK;
        CONTINUE SERIALIZABLE_LOOP;
    END;
  END LOOP;  -- SERIALIZABLE_LOOP
END;

सीरियलाइजेशन जादू नहीं है, और यह "मुक्त" नहीं है (जहां "मुक्त" का अर्थ है "मुझे डेवलपर के रूप में इसे ठीक से काम करने के लिए कुछ भी करने की ज़रूरत नहीं है")। इसे ठीक से काम करने के लिए डेवलपर की ओर से अधिक योजना और काम करने की आवश्यकता है, कम नहीं। साझा करें और आनंद लें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Apps R12.2 . में TLS को सक्षम करना

  2. java.security.AccessControlException:एक्सेस अस्वीकृत (java.security.SecurityPermission authProvider.SunMSCAPI)

  3. Oracle क्लाउड प्लेटफ़ॉर्म पर Oracle डेटाबेस 12c के साथ Oracle JDeveloper 12c का उपयोग करना, भाग 1

  4. इनर जॉइन टू टेबल, एग्रीगेटिंग वर्चर फील्ड

  5. Oracle:उपयोगकर्ता डेटा में लूप द्वारा कनेक्ट करें