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

SQLite में कंप्यूटेड कॉलम कैसे बनाएं?

जेनरेटेड कॉलम सपोर्ट को SQLite में वर्जन 3.31.0 में जोड़ा गया था, जिसे 22 जनवरी 2020 को रिलीज किया गया था।

जेनरेट किए गए कॉलम और कंप्यूटेड कॉलम एक ही चीज हैं। वे स्तंभ हैं जिनके मान एक ही पंक्ति में अन्य स्तंभों के कार्य हैं।

SQLite में, जेनरेट किए गए कॉलम GENERATED ALWAYS . का उपयोग करके बनाए जाते हैं तालिका बनाते या बदलते समय स्तंभ-बाधा।

उत्पन्न स्तंभ दो प्रकार के होते हैं; STORED और VIRTUAL . केवल VIRTUAL तालिका में परिवर्तन करते समय कॉलम जोड़े जा सकते हैं। तालिका बनाते समय दोनों प्रकारों को जोड़ा जा सकता है।

उदाहरण

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

CREATE TABLE Products( 
    Id INTEGER PRIMARY KEY, 
    Name TEXT,
    Qty INT,
    Price INT,
    TotalValue INT GENERATED ALWAYS AS (Qty * Price)
);

यदि आपको निम्न त्रुटि मिलती है:

Error: near "AS": syntax error

संभावना है, आपको SQLite के बाद के संस्करण में अपग्रेड करने की आवश्यकता है। जेनरेट किए गए कॉलम केवल SQLite 3.31.0 में पेश किए गए थे।

अब डेटा डालें और उसे चुनें।

INSERT INTO Products VALUES 
  (1, 'Hammer', 10, 9.99),
  (2, 'Saw', 5, 11.34),
  (3, 'Wrench', 7, 37.00),
  (4, 'Chisel', 9, 23.00),
  (5, 'Bandage', 70, 120.00);

SELECT * FROM Products;

परिणाम:

Id     Name        Qty    Price   TotalValue
-----  ----------  -----  ------  ----------
1      Hammer      10     9.99    99.9      
2      Saw         5      11.34   56.7      
3      Wrench      7      37      259       
4      Chisel      9      23      207       
5      Bandage     70     120     8400      

यह एक सरल उदाहरण है और आप निश्चित रूप से अधिक जटिल अभिव्यक्तियों का उपयोग कर सकते हैं, उदाहरण के लिए, वे जो अंतर्निहित कार्यों का उपयोग करते हैं।

वर्चुअल बनाम संग्रहित

डिफ़ॉल्ट रूप से, परिकलित कॉलम VIRTUAL . के रूप में बनाया जाता है कॉलम।

आपके पास STORED . बनाने का विकल्प भी है कॉलम।

एक VIRTUAL . का मान पढ़ते समय कॉलम की गणना की जाती है, जबकि STORED . का मान पंक्ति लिखे जाने पर कॉलम की गणना की जाती है।

आप स्पष्ट रूप से VIRTUAL . का उपयोग कर सकते हैं या STORED आपकी कॉलम परिभाषा में यह इंगित करने के लिए कि यह कौन सा होना चाहिए। यदि आप इसे छोड़ देते हैं, तो यह VIRTUAL होगा ।

यहां बताया गया है कि हम STORED . का उपयोग करने के लिए पिछले उदाहरण को कैसे बदल सकते हैं कॉलम।

CREATE TABLE Products( 
    Id INTEGER PRIMARY KEY, 
    Name TEXT,
    Qty INT,
    Price INT,
    TotalValue INT GENERATED ALWAYS AS (Qty * Price) STORED
);

भले ही वह STORED हो कॉलम या VIRTUAL , डेटा दर्ज करना और चुनना बिल्कुल समान है।

INSERT INTO Products VALUES 
  (1, 'Hammer', 10, 9.99),
  (2, 'Saw', 5, 11.34),
  (3, 'Wrench', 7, 37.00),
  (4, 'Chisel', 9, 23.00),
  (5, 'Bandage', 70, 120.00);

SELECT * FROM Products;

परिणाम:

Id     Name        Qty    Price   TotalValue
-----  ----------  -----  ------  ----------
1      Hammer      10     9.99    99.9      
2      Saw         5      11.34   56.7      
3      Wrench      7      37      259       
4      Chisel      9      23      207       
5      Bandage     70     120     8400      

जेनरेट किए गए कॉलम में डेटा अपडेट करना

आप सीधे परिकलित कॉलम में डेटा अपडेट नहीं कर सकते। यानी आप सीधे परिकलित कॉलम पर ही नहीं लिख सकते।

इसके डेटा को अपडेट करने के लिए, आपको अंतर्निहित कॉलम में डेटा को अपडेट करना होगा जो कि परिकलित कॉलम के एक्सप्रेशन में उपयोग किया जाता है।

पिछले उदाहरणों में उपयोग किए गए डेटा को अपडेट करने का एक उदाहरण यहां दिया गया है।

UPDATE Products 
SET Qty = 5 WHERE Id = 1;

SELECT * FROM Products;

परिणाम:

Id     Name        Qty    Price   TotalValue
-----  ----------  -----  ------  ----------
1      Hammer      5      9.99    49.95     
2      Saw         5      11.34   56.7      
3      Wrench      7      37      259       
4      Chisel      9      23      207       
5      Bandage     70     120     8400      

इस मामले में मैंने उपलब्ध हथौड़ों की संख्या को घटाकर 5 कर दिया। इसने बदले में स्टॉक में हथौड़ों के कुल मूल्य और उत्पन्न कॉलम में मूल्य (TotalValue) को कम कर दिया। ) 99.99 से घटाकर 49.95 कर दिया गया।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक webservice से डेटा पढ़ने के लिए अनुशंसित तरीका/आदेश, उस डेटा को पार्स करें और इसे SQLite डीबी में डालें

  2. SQLite अनुक्रमणिका

  3. sqlite लौटा:त्रुटि कोड =1, संदेश =ऐसा कोई स्तंभ नहीं:रसोई 1

  4. SQLite में लोअरकेस अक्षरों वाली पंक्तियों को खोजने के 3 तरीके

  5. android.database.sqlite.SQLiteException:एस के पास:सिंटैक्स त्रुटि (कोड 1):,