विशिष्टता को एक अद्वितीय बाधा के साथ लागू किया जा सकता है।
अद्वितीय अनुक्रमणिका केस-संवेदी है या नहीं, यह सर्वर (या तालिका के) संयोजन द्वारा निर्धारित किया जाता है ।
आप इस क्वेरी के साथ अपने डेटाबेस का वर्तमान मिलान प्राप्त कर सकते हैं:
SELECT DATABASEPROPERTYEX('AdventureWorks', 'Collation') SQLCollation;
और आपको कुछ इस तरह मिलना चाहिए:
SQLCollation
————————————
SQL_Latin1_General_CP1_CI_AS
यहाँ, मिलान के अंत में "CI_AS" का अर्थ है:CI =केस असंवेदनशील, AS =एक्सेंट संवेदनशील।
इसे जो कुछ भी आपको चाहिए उसे बदला जा सकता है। यदि आपके डेटाबेस और/या तालिका में केस-संवेदी संयोजन है, तो मैं अपेक्षा करता हूं कि आपकी अनुक्रमणिका की विशिष्टता केस-संवेदी भी होगी, उदा। आपका abcdef और एबीसीडीईएफ दोनों अद्वितीय स्ट्रिंग के रूप में स्वीकार्य होने चाहिए।
मार्क
अद्यतन:
मैंने अभी यह कोशिश की है (एसक्यूएल सर्वर 2008 डेवलपर संस्करण x64) - मेरे लिए काम करता है (मेरा डेटाबेस आम तौर पर "लैटिन 1_General_CI_AS संयोजन का उपयोग कर रहा है, लेकिन मैं प्रति तालिका/प्रति VARCHAR कॉलम भी एक अलग परिभाषित कर सकता हूं):
CREATE TABLE TestUnique
(string VARCHAR(50) COLLATE SQL_Latin1_General_Cp1_CS_AS)
CREATE UNIQUE INDEX UIX_Test ON dbo.TestUnique(string)
INSERT INTO dbo.TestUnique(string) VALUES ('abc')
INSERT INTO dbo.TestUnique(string) VALUES ('ABC')
SELECT * FROM dbo.TestUnique
और मैं वापस आ जाता हूँ:
string
ABC
abc
और अद्वितीय अनुक्रमणिका के उल्लंघन के बारे में कोई त्रुटि नहीं है।