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

SQLite में एक कॉलम के लिए एक डिफ़ॉल्ट मान सेट करें:डिफ़ॉल्ट बाधा

SQLite में एक टेबल बनाते समय, आपके पास प्रत्येक कॉलम में बाधाओं को जोड़ने का विकल्प होता है।

ऐसी ही एक बाधा है DEFAULT बाधा।

DEFAULT बाधा आपको उस स्थिति में उपयोग किए जाने वाले मान को निर्दिष्ट करने की अनुमति देती है जब कोई नई पंक्ति डाली जाती है तो उस कॉलम के लिए कोई मान प्रदान नहीं किया जाता है।

अगर आप नहीं एक DEFAULT का उपयोग करें क्लॉज, तो कॉलम के लिए डिफ़ॉल्ट मान NULL है ।

संभावित डिफ़ॉल्ट मान

DEFAULT . का स्पष्ट डिफ़ॉल्ट मान बाधा निम्न में से कोई भी हो सकती है:

  • एक स्ट्रिंग स्थिरांक
  • एक बूँद स्थिरांक
  • एक हस्ताक्षरित संख्या
  • कोष्ठक में संलग्न कोई भी स्थिर व्यंजक।
  • CURRENT_TIME
  • CURRENT_DATE
  • CURRENT_TIMESTAMP
  • NULL

उदाहरण

प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।

CREATE TABLE Products( 
    ProductId INTEGER PRIMARY KEY, 
    ProductName,
    Price DEFAULT 0.00
);

यहां मैंने एक DEFAULT जोड़ा है कीमत . के लिए बाधा कॉलम। इस मामले में, डिफ़ॉल्ट मान 0.00 है ।

अब जब मैं कीमत . के लिए कोई मान निर्दिष्ट किए बिना एक नई पंक्ति सम्मिलित करता हूं कॉलम, डिफ़ॉल्ट मान का उपयोग किया जाता है।

INSERT INTO Products ( ProductId, ProductName ) 
VALUES (1, 'Long Weight');

SELECT * FROM Products;

परिणाम:

ProductId   ProductName  Price     
----------  -----------  ----------
1           Long Weight  0.0       

स्पष्ट मान

बेशक, डिफ़ॉल्ट मान का उपयोग केवल तभी किया जाता है जब आप स्पष्ट रूप से कोई मान प्रदान नहीं करते हैं। यदि आप करते हैं, तो इसके बजाय उस मान का उपयोग किया जाता है।

यहाँ एक और उदाहरण है। इस बार मैं स्पष्ट रूप से उस कीमत . के लिए एक मूल्य प्रदान करता हूं कॉलम।

INSERT INTO Products ( ProductId, ProductName, Price ) 
VALUES (2, 'Left-Handed Screwdriver', 19.99);

SELECT * FROM Products;

परिणाम:

ProductId   ProductName                Price     
----------  -------------------------  ----------
1           Long Weight                0.0       
2           Left-Handed Screwdriver    19.99     

स्पष्ट NULLs

पिछला उदाहरण स्पष्ट रूप से प्रदान किए गए NULL . पर भी लागू होता है मान।

इसे प्रदर्शित करने के लिए, अगर मैं स्पष्ट रूप से NULL डालता हूं तो क्या होता है? कीमत . में कॉलम।

INSERT INTO Products ( ProductId, ProductName, Price ) 
VALUES (3, 'Elbow Grease', NULL);

SELECT * FROM Products;

परिणाम:

ProductId   ProductName               Price     
----------  ------------------------  ----------
1           Long Weight               0.0       
2           Left-Handed Screwdriver   19.99     
3           Elbow Grease                        

इस बार कीमत कॉलम NULL है , क्योंकि मैंने स्पष्ट रूप से उस कॉलम में यही डाला है।

ऐसा होने से रोकने के लिए, SQLite में डेटा सम्मिलित करते समय NULL मानों को कॉलम के डिफ़ॉल्ट मान में कैसे बदलें देखें।

डिफ़ॉल्ट टाइमस्टैम्प

इस उदाहरण में मैं एक और टेबल बनाता हूं। इस बार मैंने डिफ़ॉल्ट मान को वर्तमान टाइमस्टैम्प पर सेट किया है।

CREATE TABLE Types( 
    TypeId INTEGER PRIMARY KEY, 
    Type,
    DateInserted DEFAULT CURRENT_TIMESTAMP
);

और अब कुछ डेटा के लिए।

INSERT INTO Types (Type) 
VALUES ( 'Hardware' );

SELECT * FROM Types;

परिणाम:

TypeId      Type        DateInserted       
----------  ----------  -------------------
1           Hardware    2020-06-05 00:21:57

टाइमस्टैम्प उम्मीद के मुताबिक डाला गया है।

एक डिफ़ॉल्ट मान के रूप में स्वतः वृद्धिशील मान

ध्यान दें कि पिछले उदाहरण में मैंने TypeId . के लिए कोई मान भी नहीं दिया था कॉलम, लेकिन यह स्वचालित रूप से वैसे भी एक डिफ़ॉल्ट मान उत्पन्न करता है।

इस मामले में, डिफ़ॉल्ट मान DEFAULT . के कारण नहीं था बाधा यह इस तथ्य के कारण था कि कॉलम एक प्राथमिक कुंजी कॉलम है जिसे INTEGER PRIMARY KEY का उपयोग करके बनाया गया था। . जब आप INTEGER PRIMARY KEY . का उपयोग करके किसी कॉलम को परिभाषित करते हैं , कॉलम स्वचालित रूप से एक ऑटो-इन्क्रीमेंट कॉलम बन जाता है।

इसे और अच्छी तरह से प्रदर्शित करने के लिए, अगर मैं कुछ और पंक्तियाँ सम्मिलित करता हूँ तो क्या होता है।

INSERT INTO Types (Type) 
VALUES 
  ( 'Software' ),
  ( 'Hardcopy' );

SELECT * FROM Types;

परिणाम:

TypeId      Type        DateInserted       
----------  ----------  -------------------
1           Hardware    2020-06-05 00:21:57
2           Software    2020-06-05 00:22:14
3           Hardcopy    2020-06-05 00:22:14

ऑटो-इन्क्रीमेंटिंग कॉलम के बारे में अधिक जानकारी के लिए, SQLite में ऑटोइनक्रिमेंट कैसे काम करता है, और SQLite में ऑटो-इंक्रीमेंटिंग कॉलम कैसे बनाएं देखें।

एक डिफ़ॉल्ट मान के रूप में अभिव्यक्ति

आप निरंतर अभिव्यक्ति का उपयोग डिफ़ॉल्ट मान के रूप में भी कर सकते हैं। ऐसा करने के लिए, व्यंजक कोष्ठकों में संलग्न होना चाहिए।

यहाँ एक उदाहरण है।

CREATE TABLE Person( 
    PersonId INTEGER PRIMARY KEY, 
    Name,
    Entered DEFAULT (round(julianday('now'))),
    Deadline  DEFAULT (round(julianday('now')) + 10.5)
);

और अब कुछ डेटा के लिए।

INSERT INTO Person (Name) 
VALUES ( 'Fred' );

SELECT * FROM Person;

परिणाम:

PersonId    Name        Entered     Deadline  
----------  ----------  ----------  ----------
1           Fred        2459006.0   2459016.5 

ध्यान दें कि व्यंजक एक स्थिर व्यंजक होना चाहिए। एक निरंतर अभिव्यक्ति एक अभिव्यक्ति है जिसमें केवल स्थिरांक होते हैं।

यदि आप किसी ऐसे व्यंजक का उपयोग करने का प्रयास करते हैं जिसमें केवल स्थिरांक नहीं हैं, तो आपको एक त्रुटि मिलेगी।

CREATE TABLE Person( 
    PersonId INTEGER PRIMARY KEY, 
    FirstName,
    LastName,
    UserName DEFAULT (FirstName || LastName)
);

परिणाम:

Error: default value of column [UserName] is not constant

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite दिनांक/समय कार्यों के लिए मान्य संशोधक

  2. SQLite UNIXEPOCH () फ़ंक्शन का परिचय देता है

  3. SQLite दिनांक/समय कार्यों के लिए मान्य समय स्ट्रिंग प्रारूप

  4. SQLite में किसी तालिका की संरचना के बारे में जानकारी प्राप्त करने के 4 तरीके

  5. SQLite सेल्फ-जॉइन