परिदृश्य:
आप SQL सर्वर डेवलपर के रूप में काम कर रहे हैं, आपको dbo के लिए स्क्रिप्ट बनाने के लिए कहा जाता है। प्रथम नाम और अंतिम नाम कॉलम पर अद्वितीय प्रतिबंध के साथ ग्राहक तालिका।
समाधान:
जैसा कि हम जानते हैं कि SQL सर्वर में अद्वितीय बाधा कॉलम या कॉलम पर केवल अद्वितीय मानों को स्वीकार करने के लिए कॉलम/एस को प्रतिबंधित करने के लिए बनाई गई है। हमारे मामले में FirstName और LastName।
USE [YourDatabaseName]
GO
CREATE TABLE [dbo].[Customer](
[FirstName] [varchar](50) NULL,
[LastName] [varchar](50) NULL,
[SSN] VARCHAR(11),
Constraint UQ_Dbo_Customer_FName_LName Unique(FirstName,LastName)
)
--Let's insert some sample data to test Unique Constraint
Insert into dbo.Customer(FirstName,LastName,SSN)
Values(Null,Null,'000-00-0000'),
('Aamir',Null,'000-00-0000'),
(Null,'Aamir','000-00-0000')
,('Aamir','Shahzad','000-00-0001')
,('Raza','M','000-00-0002')
यदि आपने इन्सर्ट स्टेटमेंट पर ध्यान दिया है, तो फर्स्ट रिकॉर्ड में मैंने फर्स्टनाम और लास्ट नेम के लिए दोनों नल मान रखे हैं। दूसरे रिकॉर्ड में मैंने पहले नाम के लिए 'आमिर' और अंतिम नाम के लिए शून्य का इस्तेमाल किया। तीसरे रिकॉर्ड में दूसरे रिकॉर्ड के विपरीत। यहाँ से हम क्या समझते हैं कि दोनों कॉलम मानों पर अद्वितीय बाधा काम कर रही है। जब तक दोनों स्तंभों का संयुक्त मान अद्वितीय है, तब तक यह हमें सम्मिलित करने देगा, यहां तक कि उनमें से एक भी शून्य है। , यह मुझे बिना किसी समस्या के आने देगा, क्योंकि यह मौजूदा मूल्यों से अद्वितीय है।
Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza',Null,'000-00-0000')
आइए चुनिंदा क्वेरी का उपयोग करके तालिका में रिकॉर्ड देखें।
|
एसक्यूएल सर्वर टेबल में एक से अधिक कॉलम पर यूनीक कंस्ट्रक्शन कैसे जोड़ें |
यदि हम डुप्लिकेट रिकॉर्ड डालने का प्रयास करते हैं, तो हमें नीचे त्रुटि मिलेगी।
Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza',Null,'000-00-0000')
Msg 2627, Level 14, State 1, Line 30, UNIQUE KEY बाधा 'UQ_Dbo_Customer_FName_LName' का उल्लंघन। ऑब्जेक्ट 'dbo.Customer' में डुप्लिकेट कुंजी सम्मिलित नहीं कर सकता। डुप्लीकेट कुंजी मान (रज़ा, ) है। बयान समाप्त कर दिया गया है।