यदि आपको कभी भी सभी CHECK
. को सक्षम या अक्षम करने की आवश्यकता हो तो SQLite में बाधाएं, आप ignore_check_constraints . का उपयोग कर सकते हैं PRAGMA स्टेटमेंट।
यह व्यावहारिक कथन CHECK
. के प्रवर्तन को स्पष्ट रूप से सक्षम या अक्षम करता है प्रतिबंध। डिफ़ॉल्ट सेटिंग बंद है, जिसका अर्थ है कि CHECK
बाधाओं को डिफ़ॉल्ट रूप से लागू किया जाता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
PRAGMA ignore_check_constraints = boolean;
जहां बूलियन एक बूलियन मान है।
- अक्षम करने के लिए
CHECK
बाधाओं, यह निम्न में से कोई भी हो सकता है:false
no
off
0
- सक्षम करने के लिए
CHECK
बाधाओं, यह निम्न में से कोई भी हो सकता है:true
yes
on
1
उदाहरण
सबसे पहले, एक CHECK
. के साथ एक टेबल बनाते हैं बाधा:
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY,
ProductName,
Price
CHECK (Price > 0)
);
अब हम टॉगल कर सकते हैं CHECK
उस प्रतिबंध को लागू करने या न लागू करने के लिए आवश्यक बाधाओं को चालू या बंद करना।
जांच बाधाओं को सक्षम करें
यहां सभी CHECK
. को सक्षम करने का एक उदाहरण दिया गया है बाधाएं:
PRAGMA ignore_check_constraints = 0;
जैसा कि बताया गया है, यह वैसे भी डिफ़ॉल्ट मान है। इसलिए यदि आप इस PRAGMA स्टेटमेंट का उपयोग नहीं करते हैं CHECK
इस मान पर बाधाएं पहले से ही सेट की जाएंगी।
आइए अब जाँचते हैं कि CHECK
बाधाओं को वास्तव में उस डेटा को सम्मिलित करने का प्रयास करके सक्षम किया जाता है जो उस CHECK
. का उल्लंघन करता है बाधा:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
परिणाम:
Error: CHECK constraint failed: Products
तो CHECK
अपेक्षा के अनुरूप प्रतिबंध लागू किया गया था।
जांच बाधाओं को अक्षम करें
यहां सभी CHECK
. को अक्षम करने का एक उदाहरण दिया गया है बाधाएं:
PRAGMA ignore_check_constraints = 1;
आइए अब फिर से वही डेटा डालने का प्रयास करें और परिणाम चुनें:
INSERT INTO Products VALUES
(NULL, 'Blue Widget', 0.00);
SELECT * FROM Products;
परिणाम:
ProductId ProductName Price ---------- ----------- ---------- 1 Blue Widget 0.0
जैसा कि अपेक्षित था, डेटा डेटाबेस में प्रवेश करने में कामयाब रहा, भले ही यह CHECK
. का उल्लंघन करता हो बाधा।