SQLite
 sql >> डेटाबेस >  >> RDS >> SQLite

SQLite में एक जाँच बाधा बनाएँ

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       

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android SQLite अद्यतन पंक्ति काम नहीं कर रही है

  2. एंड्रॉइड:एसक्यूलाइट से अपने नाम से सर्वर से गतिशील रूप से छवि कैसे लोड करें?

  3. एंड्रॉइड - पहले से बंद ऑब्जेक्ट को फिर से खोलने का प्रयास:SQLiteQuery लोडर मैनेजर का उपयोग कर

  4. यदि टाइमस्टैम्प आज की तारीख से मेल खाता है तो SQLite पंक्तियों का चयन करें

  5. SQLite COUNT