मेरे कोड (जावा) से मैं यह सुनिश्चित करना चाहता हूं कि मेरे कोड को निष्पादित करने के बाद डेटाबेस में एक पंक्ति मौजूद है (डीबी 2)।क्या डीबी 2 में "डालने या अपडेट" कथन है?
मेरा कोड अब select
करता है और यदि कोई परिणाम नहीं लौटाया जाता है तो यह insert
करता है। मुझे वास्तव में यह कोड पसंद नहीं है क्योंकि यह बहु-थ्रेडेड वातावरण में चलते समय मुझे समवर्ती मुद्दों के बारे में बताता है।
मैं यह करना चाहता हूं कि यह तर्क मेरे जावा कोड के बजाय डीबी 2 में डालना है। क्या डीबी 2 में insert-or-update
कथन है? या ऐसा कुछ भी जिसे मैं उपयोग कर सकता हूं?
उदाहरण के लिए:
insertupdate into mytable values ('myid')
करने का एक और तरीका है यह शायद होगा हमेशा डालने और पकड़ करने के लिए "एसक्यूएल-कोड -803 प्राथमिक कुंजी पहले से मौजूद है", लेकिन मुझे लगता है कि यदि संभव हो तो से बचने के लिए चाहते हैं ।
क्या प्रति थ्रेड एक लेनदेन होना बेहतर नहीं होगा? डीबीएमएस कई धागे के साथ अच्छे हैं, यही कारण है कि लेनदेन का आविष्कार किया गया था। वे समवर्ती मुद्दे को हल करेंगे। – bortzmeyer
यह समवर्ती मुद्दे को हल नहीं करेगा क्योंकि लेनदेन केवल पहले से मौजूद पंक्ति पर अवरुद्ध करके काम करता है।यदि पंक्ति मौजूद नहीं है, तो लेनदेन इस पर अवरुद्ध नहीं हो सकता है और इसलिए इस प्रकार का ऑपरेशन अभी भी समवर्ती मुद्दों के लिए खुला है – Richard