SQLite में, आप एक CHECK
बना सकते हैं CREATE TABLE
. के भीतर लागू कोड जोड़कर बाधा तालिका बनाते समय कथन।
अगर किसी टेबल में CHECK
है उस पर प्रतिबंध, और आप CHECK
. का उल्लंघन करने वाले डेटा को सम्मिलित या अद्यतन करने का प्रयास करते हैं बाधा, ऑपरेशन एक त्रुटि के साथ विफल हो जाएगा।
स्तंभ-स्तर की जांच बाधा
यहां एक कॉलम-स्तरीय CHECK
बनाने का एक उदाहरण दिया गया है बाधा।
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY,
ProductName,
Price
CHECK (Price > 0)
);
वह भाग जो CHECK (Price > 0)
. जाता है CHECK
है बाधा।
इस मामले में, यह निर्दिष्ट करता है कि कीमत शून्य से अधिक होनी चाहिए।
अब देखते हैं कि अगर हम इस बाधा का उल्लंघन करने वाले डेटा को सम्मिलित करने का प्रयास करते हैं तो क्या होता है।
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
परिणाम:
Error: CHECK constraint failed: Products
CHECK
बाधा ने अपेक्षा के अनुरूप काम किया।
यदि मैं ऋणात्मक मान का उपयोग करने का प्रयास करता हूं तो मुझे वही परिणाम मिलता है।
INSERT INTO Products VALUES
(NULL, 'Blue Widget', -1.00);
परिणाम:
Error: CHECK constraint failed: Products
लेकिन अगर मैं इसे शून्य से अधिक मान तक बढ़ा दूं, तो INSERT
ऑपरेशन सफल हुआ।
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 1.00);
SELECT * FROM Products;
परिणाम:
ProductId ProductName Price ---------- ----------- ---------- 1 Blue Widget 1.0
टेबल-लेवल चेक बाधा
एक टेबल-लेवल CHECK
बाधा केवल एक कॉलम के बजाय पूरी पंक्ति में डेटा की जांच करती है। दूसरे शब्दों में, आप एकाधिक स्तंभों से डेटा की जांच करने के लिए तालिका-स्तर की बाधा का उपयोग कर सकते हैं।
यहां तालिका-स्तर का एक उदाहरण दिया गया है CHECK
बाधा।
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY,
ProductName,
Price,
Discount,
CHECK (Price >= Discount)
);
यह तालिका पहले वाले के समान है, सिवाय इसके कि मैंने छूट . नामक एक अतिरिक्त कॉलम जोड़ा है ।
CHECK
के लिए बाधा, मैं अब जांच कर रहा हूं कि कीमत छूट से बड़ी है (हम वास्तविक कीमत से बड़ी छूट की संभावना नहीं चाहते हैं)।
अगर मैं कीमत से बड़ी छूट डालने की कोशिश करता हूं तो यहां क्या होता है।
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 1.00, 2.00);
परिणाम:
Error: CHECK constraint failed: Products
अगर मैं छूट को इस तरह समायोजित करता हूं कि यह कीमत से कम है, तो इसे सफलतापूर्वक डाला गया है।
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 1.00, 0.50);
SELECT * FROM Products;
परिणाम:
ProductId ProductName Price Discount ---------- ----------- ---------- ---------- 1 Blue Widget 1.0 0.5