SQL सर्वर में, उसी CREATE TABLE
. का उपयोग करके अस्थायी तालिकाएँ बनाई जाती हैं नियमित तालिकाओं के रूप में वाक्यविन्यास। अंतर यह है कि अस्थायी तालिकाओं के नाम के आगे एक या दो अंक चिह्न होते हैं (#
), इस पर निर्भर करता है कि यह स्थानीय अस्थायी तालिका है या वैश्विक अस्थायी तालिका:
- स्थानीय अस्थायी तालिकाएं एक एकल संख्या चिह्न के साथ उपसर्ग हैं (
#
) - वैश्विक अस्थायी तालिकाएं डबल नंबर चिह्न (
##
. के साथ उपसर्ग किया जाता है )
उदाहरण 1 - एक स्थानीय अस्थायी तालिका बनाएं
यहां एक स्थानीय अस्थायी तालिका बनाने का एक उदाहरण दिया गया है:
CREATE TABLE #Cats ( CatId int PRIMARY KEY, CatName varchar(70) );
स्थानीय अस्थायी तालिका के लिए आपके द्वारा निर्दिष्ट नाम अधिकतम 116 वर्णों का हो सकता है। अन्य तालिका प्रकार 128 वर्णों के हो सकते हैं, लेकिन स्थानीय अस्थायी तालिकाओं को स्वचालित रूप से सिस्टम-जनरेटेड संख्यात्मक प्रत्यय के साथ जोड़ दिया जाता है।
उदाहरण 2 - एक वैश्विक अस्थायी तालिका बनाएं
यहां वैश्विक अस्थायी तालिका बनाने का एक उदाहरण दिया गया है:
CREATE TABLE ##Cats ( CatId int PRIMARY KEY, CatName varchar(70) );
वैश्विक अस्थायी तालिका नाम अधिकतम 128 वर्ण हो सकते हैं। SQL सर्वर सिस्टम-जनरेटेड न्यूमेरिक प्रत्यय को वैश्विक अस्थायी तालिकाओं में नहीं जोड़ता है, जैसे कि यह स्थानीय अस्थायी तालिकाओं के लिए करता है, ताकि आप पूर्ण स्थान का उपयोग कर सकें।
उदाहरण 3 - अस्थायी तालिकाएं देखें
मैं अपनी नई बनाई गई अस्थायी तालिकाओं को देखने के लिए निम्न क्वेरी चला सकता हूं।
SELECT name FROM tempdb.sys.tables WHERE name LIKE '#Cats%' OR name = '##Cats';
परिणाम:
+----------------------------------------------------------------------------------------------------------------------------------+ | name | |----------------------------------------------------------------------------------------------------------------------------------| | ##Cats | | #Cats_______________________________________________________________________________________________________________000000000018 | +----------------------------------------------------------------------------------------------------------------------------------+
हम देख सकते हैं कि स्थानीय अस्थायी तालिका में सिस्टम से उत्पन्न संख्यात्मक प्रत्यय जोड़ा गया है, और यही कारण है कि मेरी क्वेरी LIKE
का उपयोग करती है उस तालिका के लिए ऑपरेटर।
उदाहरण 4 - नया सत्र
यदि मैं एक नया सत्र खोलता हूं, तो उसी नाम (बिल्लियों) के साथ एक स्थानीय अस्थायी तालिका बनाएं, फिर इस क्वेरी को फिर से चलाएं, मुझे यह मिलता है:
+----------------------------------------------------------------------------------------------------------------------------------+ | name | |----------------------------------------------------------------------------------------------------------------------------------| | ##Cats | | #Cats_______________________________________________________________________________________________________________000000000018 | | #Cats_______________________________________________________________________________________________________________000000000019 | +----------------------------------------------------------------------------------------------------------------------------------+
इसलिए कई सत्र एक ही नाम की स्थानीय तालिका बना सकते हैं क्योंकि SQL सर्वर प्रत्यय को बढ़ाकर उस नाम को संशोधित करता है।
उदाहरण 5 - वही सत्र
हालांकि, अगर मैं स्थानीय अस्थायी तालिका को उसी . में फिर से बनाने का प्रयास करता हूं सत्र, मुझे यह मिलता है:
Msg 2714, Level 16, State 6, Line 1 There is already an object named '#Cats' in the database.
और अगर मैं एक और सत्र खोलता हूं, तो मैं सफल होता हूं, और जब मैं tempdb.sys.tables
क्वेरी करता हूं मुझे यह मिलता है:
+----------------------------------------------------------------------------------------------------------------------------------+ | name | |----------------------------------------------------------------------------------------------------------------------------------| | ##Cats | | #Cats_______________________________________________________________________________________________________________000000000018 | | #Cats_______________________________________________________________________________________________________________000000000019 | | #Cats_______________________________________________________________________________________________________________00000000001B | +----------------------------------------------------------------------------------------------------------------------------------+