Getting XDMP-CONFLICTINGUPDATES exception in Marklogic -
निम्नलिखित कथन निष्पादित करने का प्रयास करते समय बहु बयानों लेनदेन के लिए लेनदेन नियम के साथ थोड़ा भ्रमित। चूंकि दस्तावेज़ पर लॉक पहले से ही जारी किया गया है। नोड करने में कोई समस्या क्यों होनी चाहिए? सिंटैक्स त्रुटियों के कारण नमूना कोड लिखे नहीं चलेंगे: इसमें वेरिएबल गायब हैं और वहां है अभिव्यक्ति शरीर के बाद एक समारोह लेकिन पिछली बार देखिए, मल्टी-स्टेटमेंट लेनदेन का सुझाव देने के लिए यहां कुछ भी नहीं है। इसके बजाय यह एक एकल कथन की तरह दिखता है, और इसलिए मार्कलॉगिक लेन-देन आपके द्वारा उम्मीद की अपेक्षा भिन्न तरीके से व्यवहार करता है, क्योंकि XQuery अनिवार्य या प्रक्रियात्मक भाषा नहीं पर लेनदेन को पढ़ने की कोशिश करें ज्यादातर मामलों में मैं अलग-अलग लेनदेन को अलग-अलग अनुरोधों के रूप में लिखना पसंद करता हूं, लेकिन ये आपकी क्वेरी का पहला भाग है जो लेन-देन को अलग करने के लिए अर्धविराम का उपयोग करते हुए लिखा गया है। आप अंतर को समझने के लिए XDMP-CONFLICTINGUPDATES प्राप्त करना:
(dls: दस्तावेज़-अपडेट ($ uri, $ सामग्री, "मुख्य दस्तावेज़ अपडेट किया गया", fn: true (), xdmp: डिफ़ॉल्ट अनुमतियां (), $ सामग्री संग्रह), dls: दस्तावेज़-चेकिन ($ uri , Fn: true ()), dls: document-update ($ sub-uri, $ sub-content, "sub document updated", fn: true (), xdmp: default-permissions (), $ content-sub-collection ), Dls: document-checkin ($ sub-uri, fn: true ()), cin: update-version ($ sub-uri)) फ़ंक्शन cin घोषित करें: update-version ($ sub-uri) {$ id: = Xs: int (fn: doc ($ sub-uri) // id) वापस xdmp: नोड-प्रतिस्थापित करें (fn: doc ($ sub-uri) // id, element id {fn: sum (($ id, 1 ))})}};
$ uri के लिए एकाधिक अपडेट एक दूसरे के साथ संघर्ष करते हैं कॉल करने के लिए
dls: दस्तावेज़-अद्यतन अपडेट
$ uri और फिर
dls: document-checkin उसी लेनदेन में एक ही दस्तावेज़ को अपडेट करने का प्रयास करता है, एक संघर्ष के कारण वही तर्क को
$ उप-यूरी पर लागू होता है डॉक्स में, नोट किया जाता है कि "इस फ़ंक्शन को डीएलएस: डॉक्युमेंट-चेकआउट और डीएलएस: डॉक्युमेंट-चेकिन से एक अलग लेनदेन में बुलाया जाना चाहिए।"
xdmp: commit शैली में एक ही कोड को दोबारा लिखने की कोशिश कर सकते हैं।
(: अर्धविरामों के साथ कई बयान :) (: 1 कथन) आयात करें मॉड्यूल नामस्थान dls = "http://marklogic.com/xdmp/dls" "/MarkLogic/dls.xqy" पर; वैरिएबल $ सामग्री घोषित करें: = & lt; परीक्षा & gt; सामग्री & lt; / test & gt ;; चर $ content-collection घोषित करें: = "सामग्री"; $ Yuri की घोषणा करें: = "परीक्षा"; Dls: दस्तावेज़-अपडेट ($ uri, $ सामग्री, "मुख्य दस्तावेज़ नवीनीकृत", fn: true (), xdmp: डिफ़ॉल्ट-अनुमतियां (), $ सामग्री संग्रह); (: 2 बयान) आयात मॉड्यूल नामस्थान dls = "http://marklogic.com/xdmp/dls" "/MarkLogic/dls.xqy" पर; $ Yuri की घोषणा करें: = "परीक्षण"; Dls: दस्तावेज़-चेकिन ($ uri, fn: true ())
Comments
Post a Comment