डिफ़ॉल्ट बाधाओं वाले कॉलम वाली तालिका में डेटा सम्मिलित करने के लिए, हम तालिका में डिफ़ॉल्ट मान के लिए DEFAULT बाधा का उपयोग कर सकते हैं। इस लेख में निम्नलिखित पहलुओं को शामिल किया जाएगा:
- डिफ़ॉल्ट बाधा और उन्हें बनाने के लिए आवश्यक अनुमति।
- नई तालिका बनाते समय एक डिफ़ॉल्ट बाधा जोड़ना।
- एक मौजूदा तालिका में एक डिफ़ॉल्ट बाधा जोड़ना।
- टी-एसक्यूएल स्क्रिप्ट और एसएसएमएस का उपयोग करके बाधा परिभाषा को संशोधित करना और देखना।
SQL सर्वर में डिफ़ॉल्ट बाधा क्या है?
डिफ़ॉल्ट बाधा कॉलम के लिए डिफ़ॉल्ट मान निर्दिष्ट करती है।
जब हम INSERT कथन निष्पादित करते हैं लेकिन डिफ़ॉल्ट बाधा के साथ कॉलम के लिए कोई मान निर्दिष्ट नहीं करते हैं, तो SQL सर्वर डिफ़ॉल्ट बाधा परिभाषा में निर्दिष्ट डिफ़ॉल्ट मान सम्मिलित करता है।
एक डिफ़ॉल्ट बाधा बनाने के लिए, आपको तालिका को बदलने और तालिका बनाने की अनुमति की आवश्यकता है।
नई तालिका बनाते समय एक डिफ़ॉल्ट बाधा जोड़ना
बिक्री विवरण . नाम की एक तालिका है . जब हम Sale_Qty . निर्दिष्ट किए बिना तालिका में डेटा सम्मिलित करते हैं कॉलम मान, क्वेरी को शून्य सम्मिलित करना चाहिए। ऐसा करने के लिए, मैं DF_SalesDetails_SaleQty नामक एक डिफ़ॉल्ट बाधा बना रहा हूं बिक्री_मात्रा . पर कॉलम।
USE demodatabase
go
CREATE TABLE salesdetails
(
id INT IDENTITY (1, 1),
product_code VARCHAR(10),
sale_qty INT CONSTRAINT df_salesdetails_saleqty DEFAULT 0
)
अब, हम इसमें कुछ डमी रिकॉर्ड डालकर बाधा व्यवहार का परीक्षण करते हैं। निम्नलिखित क्वेरी निष्पादित करें:
INSERT INTO salesdetails
(product_code)
VALUES ('PROD0001')
तालिका से डेटा देखने के लिए निम्न क्वेरी का उपयोग करें:
INSERT INTO salesdetails
(product_code)
VALUES ('PROD0001')
आउटपुट
जैसा कि आप देख सकते हैं, शून्य Sale_Qty . में डाला गया है कॉलम।
तालिका बनाते समय, हम DEFAULT बाधा का नाम निर्दिष्ट नहीं करते हैं। SQL सर्वर एक सिस्टम-जनरेटेड अद्वितीय नाम के साथ एक बाधा उत्पन्न करता है।
नीचे दी गई क्वेरी का उपयोग करके तालिका बनाएं:
USE demodatabase
go
CREATE TABLE salesdetails
(
id INT IDENTITY (1, 1),
product_code VARCHAR(10),
sale_qty INT DEFAULT 0
)
बाधा नाम देखने के लिए निम्न स्क्रिप्ट चलाएँ:
SELECT NAME [Constraint name],
parent_object_id [Table Name],
type_desc [Object Type],
definition [Constraint Definition]
FROM sys.default_constraints
आउटपुट
SQL सर्वर ने सिस्टम-जनरेटेड नाम के साथ एक बाधा उत्पन्न की है।
मौजूदा तालिका में एक डिफ़ॉल्ट बाधा जोड़ना
तालिका के मौजूदा कॉलम पर एक बाधा जोड़ने के लिए, हम तालिका में परिवर्तन जोड़ें का उपयोग करते हैं कथन:
ALTER TABLE [tbl_name]
ADD CONSTRAINT [constraint_name] DEFAULT [default_value] FOR [Column_name]
वाक्य रचना में,
- tbl_name :उस तालिका का नाम निर्दिष्ट करें जहाँ आप डिफ़ॉल्ट बाधा जोड़ना चाहते हैं।
- constraint_name :वांछित बाधा नाम निर्दिष्ट करें।
- column_name: उस कॉलम का नाम निर्दिष्ट करें जहां आप डिफ़ॉल्ट बाधा बनाना चाहते हैं।
- डिफ़ॉल्ट_मान: वह मान निर्दिष्ट करें जिसे आप सम्मिलित करना चाहते हैं - एक पूर्णांक, वर्ण, या वर्ण स्ट्रिंग।
जब हम INSERT कथन में column_name का मान निर्दिष्ट नहीं करते हैं, तो यह default_value में निर्दिष्ट मान सम्मिलित करता है पैरामीटर।
सबसे पहले, आइए Product_name जोड़ें विक्रय विवरण . में कॉलम :
ALTER TABLE salesdetails
ADD product_name VARCHAR(500)
हम Product_name स्तंभ मान निर्दिष्ट किए बिना तालिका में डेटा सम्मिलित करते हैं। क्वेरी को लागू अवश्य सम्मिलित करना चाहिए ।
ऐसा करने के लिए, मैं DF_SalesDetails_ProductName नामक एक डिफ़ॉल्ट बाधा बना रहा हूं Product_name . पर कॉलम। निम्न क्वेरी एक डिफ़ॉल्ट बाधा उत्पन्न करती है:
ALTER TABLE dbo.salesdetails
ADD CONSTRAINT df_salesdetails_productname DEFAULT 'N/A' FOR product_name
अब, हम बाधा व्यवहार का निरीक्षण करते हैं। उत्पाद का नाम बताए बिना रिकॉर्ड डालें:
INSERT INTO salesdetails
(product_code,
product_name,
sale_qty)
VALUES ('PROD0002',
'Dell Optiplex 7080',
20)
INSERT INTO salesdetails
(product_code,
sale_qty)
VALUES ('PROD0003',
50)
एक बार रिकॉर्ड डालने के बाद, डेटा देखने के लिए SELECT क्वेरी चलाएँ:
USE demodatabase
go
SELECT *
FROM salesdetails
go
आउटपुट
जैसा कि आप ऊपर की छवि में देख सकते हैं, Product_name . का मान PROD0003 . के लिए कॉलम लागू नहीं . है ।
T-SQL Scripts का उपयोग करके DEFAULT बाधा को संशोधित करना
हम डिफ़ॉल्ट बाधा की परिभाषा बदल सकते हैं:पहले, मौजूदा बाधा को छोड़ दें और फिर एक अलग परिभाषा के साथ बाधा बनाएं।
मान लीजिए, N/A . डालने के बजाय , हम सम्मिलित करना चाहते हैं लागू नहीं . सबसे पहले, हमें DF_SalesDetails_ProductName . को छोड़ना होगा बाधा निम्नलिखित क्वेरी निष्पादित करें:
ALTER TABLE dbo.salesdetails
DROP CONSTRAINT df_salesdetails_productname
जब बाधा हटा दी जाती है, तो बाधा उत्पन्न करने के लिए क्वेरी चलाएँ:
ALTER TABLE dbo.salesdetails
ADD CONSTRAINT df_salesdetails_productname DEFAULT 'Not Applicable' FOR
product_name
अब, हम उत्पाद का नाम निर्दिष्ट किए बिना एक रिकॉर्ड सम्मिलित करते हैं:
INSERT INTO salesdetails
(product_code,
sale_qty)
VALUES ('PROD0004',
10)
विक्रय विवरण . से डेटा देखने के लिए चयन कथन चलाएँ तालिका:
USE demodatabase
go
SELECT *
FROM salesdetails
go
आउटपुट
जैसा कि आप देख सकते हैं, Product_name . का मान कॉलम लागू नहीं है।
SSMS का उपयोग करके डिफ़ॉल्ट बाधा देखना
हम SQL सर्वर प्रबंधन स्टूडियो का उपयोग करके और गतिशील प्रबंधन दृश्यों को क्वेरी करते हुए DEFAULT बाधा की सूची देख सकते हैं।
SSMS खोलें और डेटाबेस का विस्तार करें > डेमोडेटाबेस > बिक्री विवरण > बाधा :
आप DF_SalesDetails_SaleQty नामक दो बाधाओं को देख सकते हैं और DF_SalesDetails_ProductName बनाया गया।
sys.default_constraints . को क्वेरी करके बाधाओं को देखने का दूसरा तरीका . निम्न क्वेरी डिफ़ॉल्ट बाधाओं और उनकी परिभाषाओं की सूची को पॉप्युलेट करती है:
SELECT NAME [Constraint name],
Object_name(parent_object_id)[Table Name],
type_desc [Consrtaint Type],
definition [Constraint Definition]
FROM sys.default_constraints
आउटपुट
हम sp_helpconstraint . का उपयोग कर सकते हैं तालिका पर बनाई गई बाधाओं की सूची देखने के लिए संग्रहीत कार्यविधि:
EXEC Sp_helpconstraint 'SalesDetails'
आउटपुट
बाधा_कुंजी कॉलम डिफ़ॉल्ट बाधा परिभाषा दिखाता है।
प्रतिबंध को हटाना
हम एक बाधा को कई तरह से छोड़ सकते हैं। हम इसे निम्न में से किसी भी तरीके का उपयोग करके कर सकते हैं:
- टेबल ड्रॉप प्रतिबंध कथन बदलें।
- डिफ़ॉल्ट विवरण ड्रॉप करें।
ALTER TABLE DROP CONSTRAINT कमांड का उपयोग करके एक बाधा छोड़ें
बाधा को दूर करने के लिए, हम टेबल ड्रॉप कांस्टेंट को बदलें का उपयोग कर सकते हैं आज्ञा। सिंटैक्स निम्न है:
Alter table [tbl_name] drop constraint [constraint_name]
वाक्य रचना में,
- tbl_name: तालिका का नाम निर्दिष्ट करें जिसमें डिफ़ॉल्ट बाधा वाला कॉलम है।
- constraint_name: वह बाधा नाम निर्दिष्ट करें जिसे आप छोड़ना चाहते हैं।
मान लीजिए हम DF_SalesDetails_SaleQty . को छोड़ना चाहते हैं विक्रय विवरण . से बाधा टेबल। क्वेरी चलाएँ:
ALTER TABLE dbo.salesdetails
DROP CONSTRAINT [DF_SalesDetails_SaleQty]
यह सत्यापित करने के लिए कि बाधा हटा दी गई है, नीचे दी गई क्वेरी निष्पादित करें:
SELECT NAME [Constraint name],
Object_name(parent_object_id)[Table Name],
type_desc [Consrtaint Type],
definition [Constraint Definition]
FROM sys.default_constraints
आउटपुट
बाधा हटा दी गई है।
DROP DEFAULT Statement का उपयोग करके DEFAULT बाधा को दूर करें
अब, आइए समझते हैं कि कैसे हम DROP DEFAULT . का उपयोग करके डिफ़ॉल्ट बाधा को दूर कर सकते हैं बयान। DROP DEFAULT . का सिंटैक्स कथन इस प्रकार है:
DROP DEFAULT [constraint_name]
- constraint_name: वह बाधा नाम निर्दिष्ट करें जिसे आप छोड़ना चाहते हैं।
DROP DEFAULT . का उपयोग करके बाधा को दूर करने के लिए कथन, निम्न क्वेरी चलाएँ:
IF EXISTS (SELECT NAME
FROM sys.objects
WHERE NAME = 'DF_SalesDetails_ProductName'
AND type = 'D')
DROP DEFAULT [DF_SalesDetails_ProductName];
सारांश
इस प्रकार, हमने डिफ़ॉल्ट बाधाओं के साथ काम के कई आवश्यक पहलुओं की जांच की है। हमने सीखा है कि नई तालिका बनाते समय डिफ़ॉल्ट बाधा कैसे बनाएं या तालिका के मौजूदा कॉलम पर डिफ़ॉल्ट बाधा कैसे जोड़ें।
साथ ही, हमने डिफ़ॉल्ट बाधा परिभाषा को संशोधित करने, विभिन्न माध्यमों का उपयोग करके डिफ़ॉल्ट बाधाओं का विवरण देखने और डिफ़ॉल्ट बाधा को छोड़ने के मामलों का पता लगाया है।
हमें उम्मीद है कि यह जानकारी और हमारे द्वारा जांचे गए व्यावहारिक उदाहरण आपके काम में सहायक होंगे।
यह भी पढ़ें
SQL INSERT INTO SELECT:डुप्लीकेट को हैंडल करने के 5 आसान तरीके