2012-09-17 21 views
16

मैं डायनेमो डीबी में डालने की कोशिश कर रहा हूं। जब मैं putItem फ़ंक्शन को कॉल करता हूं तो क्या होगा यदि हैश कुंजी डीबी में पहले से मौजूद है? क्या PutItemResult ऑब्जेक्ट में कुछ ऐसा होता है जो हमें बता सकता है कि डुप्लिकेट हैश प्रविष्टि का प्रयास किया गया था या नहीं? मैं जांच कर रहा हूं कि हैश कुंजी के साथ कोई प्रविष्टि है या नहीं, यह जांचने के लिए मैं एक और क्वेरी चलाने से बचना चाहता हूं।क्या होगा यदि हम डुप्लिकेट डीबी में डुप्लिकेट हैश कुंजी के साथ डालेंगे?

+0

क्या आप एक विशिष्ट ढांचे का उपयोग कर रहे हैं? – yadutaf

उत्तर

20

यदि आप किसी मौजूदा प्राथमिक कुंजी पर कोई आइटम डालते हैं, तो इसे तब तक ओवरराइट किया जाएगा जब तक आप "अपेक्षित मान" का उपयोग न करें।

http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_PutItem.html

एक नया आइटम बनाता है, या (सभी विशेषताओं सहित) एक नए आइटम के साथ एक पुराने आइटम को बदल देता है: यहाँ आधिकारिक दस्तावेज की शुरूआत है। यदि एक ही प्राथमिक कुंजी के साथ निर्दिष्ट तालिका में कोई आइटम पहले से मौजूद है, तो नया आइटम पूरी तरह से मौजूदा आइटम को प्रतिस्थापित करता है। आप एक सशर्त डाल सकते हैं (यदि कोई निर्दिष्ट प्राथमिक कुंजी मौजूद नहीं है तो एक नया आइटम डालें), या किसी मौजूदा आइटम को प्रतिस्थापित करें यदि उसके पास कुछ विशेषता मान हैं।

नोट

यह सुनिश्चित करें कि कोई नया आइटम किसी मौजूदा आइटम को प्रतिस्थापित नहीं करता साथ प्राथमिक कुंजी विशेषता, या विशेषताओं के लिए गलत पर सेट मौजूद है एक सशर्त डाल आपरेशन का उपयोग करें।

अन्यथा, आप भी UpdateItem उपयोग कर सकते हैं एक पूर्व मौजूदा आइटम के क्षेत्र अद्यतन करने के लिए: http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_UpdateItem.html

+0

मुझे लगता है कि जब आप कोई आइटम बनाना चाहते हैं तो सबसे सुरक्षित तरीका यह है कि कभी भी putItem का उपयोग न करें और हमेशा अद्यतन Item का उपयोग करें। मेरे मामले में मैं केवल ऑब्जेक्ट बनाने के लिए कुंजी के साथ UpdateItem का उपयोग करता हूं, अगर यह पहले से बाहर निकलता है तो यह कुछ भी नहीं करता है। –

1

आप withReturnValues ​​(ReturnValue.ALL_OLD) 'इस बात का PutItemResult.getAttributes से एक नक्शा वापस आ जाएगी उपयोग कर सकते हैं प्रविष्टि जो पहले सम्मिलन से पहले थे।

यदि PutItemResult.getAttributes शून्य लौटाता है, तो यह एक नई प्रविष्टि थी।