/ / एसक्यूएल समझना तालिका अनन्य बाधाएं - एसक्यूएल, एसक्यूएल-सर्वर, tsql

एसक्यूएल समझने की तालिका अद्वितीय बाधाएं - एसक्यूएल, एसक्यूएल-सर्वर, tsql

मैंने दिन केवल एक मुद्दा डीबग करने की कोशिश कर बितायामैं देखता हूं कि समस्या क्या है। मेरे पास मेरी तालिका पर एक अनूठी बाधा है जो कैटलॉग संख्या के रूप में केवल अद्वितीय मानों को मजबूर करती है। हालांकि, मुझे इस मामले में अनोखा गठन करने की अच्छी समझ नहीं है। मेरे पास दो उत्पाद संख्याएं हैं I MP1156 तथा MP1156ZF.

Insert into IDWProductCodes( PRCEAN, PRCGTIN, PRCatalogNumber, PRCIsActive, PRIsReplaced, PrIsREPlacement,PRProductID)
Select
"11232", "23223", "MP115BP", 1, 0, 0, "267F104C-6BA4-4C7E-A0C1-6615CBB9DA4C"

Insert into IDWProductCodes( PRCEAN, PRCGTIN, PRCatalogNumber, PRCIsActive, PRIsReplaced, PrIsREPlacement,PRProductID)
Select
"11232", "23223", "MP115", 1, 0, 1, "267F104C-6BA4-4C7E-A0C1-6615CBB9DA4C"

Insert into IDWProductCodes( PRCEAN, PRCGTIN, PRCatalogNumber, PRCIsActive, PRIsReplaced, PrIsREPlacement,PRProductID)
Select
"11232", "23223", "MP15", 1, 1, 1, "267F104C-6BA4-4C7E-A0C1-6615CBB9DA4C"

मुझे एक त्रुटि मिलती है:

संदेश 2627, स्तर 14, राज्य 1, रेखा 5
अद्वितीय कुंजी बाधा का उल्लंघन "UK_CNUMUNIQUE"। ऑब्जेक्ट में डुप्लिकेट कुंजी सम्मिलित नहीं कर सकता "Dbo.IDWProductCodes"। डुप्लिकेट कुंजी मान (एमपी 115) है।

जब भी मैं सम्मिलित करता हूं तो क्या हो रहा हैपहली कुंजी और फिर दूसरी कुंजी डालने का प्रयास करें, एसक्यूएल मानता है कि वे वही हैं और दूसरे के साथ पहले ओवरराइट करते हैं, एक प्रभाव जो मैं बिल्कुल नहीं चाहता हूं।

जो मैं वास्तव में चाहता हूं वह प्रवेश करने की क्षमता हैतालिका में अलग-अलग तार (कोई डुप्लीकेट नहीं)। मैंने सोचा था कि यह एक अनोखा बाधा था जो यह ले जाएगा लेकिन अब मुझे यकीन नहीं है। कृपया इस समस्या को हल करने के लिए बेहतर या सर्वोत्तम दृष्टिकोण क्या है?

उत्तर:

जवाब के लिए 0 № 1

मुझे लगता है कि आप क्या कर रहे हैं गलत व्याख्या कर रहे हैं। यदि आप डुप्लिकेट डालने का प्रयास करते हैं तो एक SQL अद्वितीय बाधा मौजूदा पंक्ति के ओवरराइट का कारण नहीं बनती है। दूसरा डालने जो बाधा का उल्लंघन करता है असफल हो जाएगा।

कृपया उस कोड को दिखाएं जिसका आप उपयोग कर रहे हैंआवेषण और टेबल संरचना। मैं इसे देखने के बाद वास्तविक मुद्दे को हल करने के लिए इस उत्तर को संशोधित कर दूंगा, लेकिन आपके द्वारा प्रदान की गई जानकारी से अद्वितीय बाधा समस्या नहीं है।

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


जवाब के लिए 0 № 2

कुछ और चल रहा है। SQL सर्वर एक ही मान के रूप में दो स्ट्रिंग्स "एमपी 115" और "एमपी 115 बीपी" को भ्रमित नहीं करेगा। आपको टेबल संरचना से स्क्रिप्ट करने के लिए कई बार पूछा गया है ताकि हम इसे देख सकें। आप एसएसएमएस का उपयोग करते हैं, टेबल पर राइट-क्लिक करते हैं, और स्क्रिप्ट टेबल के रूप में> क्लिपबोर्ड पर बनाएँ। यदि आप इसके परिणाम पोस्ट करते हैं तो हम और अधिक मदद कर सकते हैं।

हालांकि, एक जंगली अनुमान है, हालांकि। क्या यह संभव है कि आपके पास तालिका में एक कंप्यूटर कॉलम है जो PRCatalogNumber को 5 वर्णों तक छोटा करता है और स्वयं पर एक अलग अद्वितीय इंडेक्स है? इससे आपको समस्या दिखाई देगी।