java - mybatis - insert transaction -
सम्मिलित करने के लिए
मेबाटिस मैपर कोड:
& lt; insert id = "insert" parameterType = "शॉप" का उपयोग करें GeneratedKeys = "true" & gt; (# {Email}, # {pswd}, # {उपनाम}, # {मोबाइल}, # {शहर}, # {createDate} के लिए दुकान (ई-मेल, पीएसडब्ल्यूडी, उपनाम, मोबाइल, शहर, # {Status}) & lt; का चयन करें मुख्य कुंजी = "id" क्रम = "बाद में" परिणामस्वरूप = "लंबा" & gt; चुराने का चयन करें ('shop_id_seq') & lt; / select key & gt; & Lt; / डालने & gt;
डेटाबेस postgresql 9.3 है।
मेरा संदेह है: बिना किसी अंतर लेनदेन, जब मैं आईडी को क्रम से क्ररवल का चयन करें ('दुकान_आईडी_एसएक्')
, क्या अन्य थ्रेड भी सम्मिलित कर रहे हैं, तो क्या गलत मान प्राप्त करना संभव है?
मैंने सोचा था कि नहीं, क्योंकि currval () फ़ंक्शन संदर्भ में चलता है वर्तमान सत्र का, वैश्विक सत्र नहीं, लेकिन मैं यह सुनिश्चित नहीं हूं।
के अनुसार, अनुक्रम फ़ंक्शन curvval
:
वर्तमान सत्र में इस अनुक्रम के लिए सबसे हाल ही में प्राप्त किए गए मान लौटें
nextval
। (यदि इस सत्र में इस क्रम के लिएअग्रिम
को कभी कॉल नहीं किया गया है तो एक त्रुटि की सूचना है।) क्योंकि यह एक सत्र-स्थानीय मान लौटा रहा है, यह एक पूर्वानुमान लगाता है
तो आपको सही मूल्य मिल जाएगा दूसरे तरीके से, अनुक्रम गैर-व्यवहारिक हैं प्रत्येक सत्र को एक अलग क्रम मान मिलता है। अनुक्रम में परिवर्तन को पूर्ववत नहीं किया जा सकता।
Comments
Post a Comment