यह आलेख दर्शाता है कि SQL सर्वर में परिकलित स्तंभ बनाने के लिए T-SQL का उपयोग कैसे करें।
एक गणना कॉलम एक वर्चुअल कॉलम है जो इसके मूल्य की गणना करने के लिए एक अभिव्यक्ति का उपयोग करता है। व्यंजक आम तौर पर अन्य स्तंभों के डेटा का उपयोग करेगा। एक परिकलित स्तंभ तालिका में भौतिक रूप से तब तक संग्रहीत नहीं होता जब तक कि उस पर PERSISTED
चिह्नित न हो ।
उदाहरण 1 - कंप्यूटेड कॉलम के साथ एक टेबल बनाएं
यहां परिकलित स्तंभ के साथ तालिका बनाने, डेटा सम्मिलित करने, फिर तालिका की सामग्री का चयन करने का एक उदाहरण दिया गया है।
CREATE TABLE Products ( ProductID int IDENTITY (1,1) NOT NULL, ProductName varchar(255), Quantity smallint, Price money, TotalValue AS Quantity * Price ); INSERT INTO Products (ProductName, Quantity, Price) VALUES ('Hammer', 5, 10), ('Corkscrew', 2, 7.50), ('Kettle', 3, 25.15); SELECT * FROM Products;
परिणाम:
+-------------+---------------+------------+---------+--------------+ | ProductID | ProductName | Quantity | Price | TotalValue | |-------------+---------------+------------+---------+--------------| | 1 | Hammer | 5 | 10.0000 | 50.0000 | | 2 | Corkscrew | 2 | 7.5000 | 15.0000 | | 3 | Kettle | 3 | 25.1500 | 75.4500 | +-------------+---------------+------------+---------+--------------+
इस मामले में, अंतिम कॉलम एक परिकलित कॉलम है। यह मात्रा कॉलम को मूल्य कॉलम से गुणा करता है। यह हमें वर्तमान में स्टॉक में उत्पाद का कुल मूल्य प्राप्त करने में सक्षम बनाता है।
उदाहरण 2 - एक स्थायी गणना कॉलम बनाएं
आप PERSISTED
. जोड़कर एक स्थायी परिकलित स्तंभ बना सकते हैं बहस। इसके परिणामस्वरूप गणना मूल्य तालिका में भौतिक रूप से संग्रहीत किया जाएगा। यदि इसे जारी नहीं रखा जाता है, तो हर बार जब आप परिकलित कॉलम पढ़ते हैं तो मान की गणना की जाती है।
यहां पिछले वाले के समान कोड उदाहरण दिया गया है, इस समय को छोड़कर मैं एक स्थायी गणना कॉलम बनाता हूं:
CREATE TABLE Products ( ProductID int IDENTITY (1,1) NOT NULL, ProductName varchar(255), Quantity smallint, Price money, TotalValue AS Quantity * Price PERSISTED );
केवल अंतर PERSISTED
. है तर्क।
उदाहरण 3 - एक मान अपडेट करें
अब अगर कोई मान Quantity
. में अपडेट किया जाता है या Price
कॉलम, यह गणना किए गए कॉलम द्वारा लौटाए गए कुल मूल्य को प्रभावित करेगा। यह तब होगा जब कॉलम बना रहे या नहीं।
उदाहरण के लिए, यदि कोई हैमर खरीदता है, तो यह गणना किए गए कॉलम द्वारा लौटाए गए कुल मूल्य को प्रभावित करेगा:
UPDATE Products SET Quantity = 4 WHERE ProductId = 1; SELECT * FROM Products;
परिणाम:
+-------------+---------------+------------+---------+--------------+ | ProductID | ProductName | Quantity | Price | TotalValue | |-------------+---------------+------------+---------+--------------| | 1 | Hammer | 4 | 10.0000 | 40.0000 | | 2 | Corkscrew | 2 | 7.5000 | 15.0000 | | 3 | Kettle | 3 | 25.1500 | 75.4500 | +-------------+---------------+------------+---------+--------------+