2010-02-03 14 views
10

मैं एक अस्थायी तालिका बनाने की तलाश में हूं जो रिपोर्ट को संकलित करते समय मध्यवर्ती तालिका के रूप में उपयोग किया जाता है।एसक्यूएल सर्वर किसी अन्य तालिका से अस्थायी तालिका बना रहा है

पृष्ठभूमि का एक सा के लिए मैं

तालिका मैं उपयोग कर सकते हैं बनाने के लिए शुद्ध करने के लिए ...

SELECT TOP 0 * INTO #temp_copy FROM temp; 

यह अस्थायी के एक खाली कॉपी बन जाती है एक वीबी 6 एप्लिकेशन पोर्टिंग कर रहा हूँ, लेकिन यह प्राथमिक कुंजी

कोई टेम्पलेट टेबल और बाधाओं को बनाने का कोई तरीका नहीं है?

क्या मुझे बाद में बाधाएं पैदा करनी चाहिए?

या मैं तालिका बनाने के द्वारा केवल तालिका बनाने से बेहतर हूं, मैं ऐसा नहीं करना चाहता क्योंकि तालिका में 45 कॉलम हैं और यह प्रक्रिया को बहुत अनावश्यक क्रॉफ्ट से भर देगा।

तालिका आवश्यकता है क्योंकि बहुत से लोगों को एक ही समय में रिपोर्ट जनरेट हो सकता है तो मैं एक भी मध्यस्थ तालिका

उत्तर

7

उपयोग नहीं कर सकते आप वास्तव में एक प्राथमिक कुंजी की ज़रूरत है? यदि आप रिपोर्ट कर रहे हैं और केवल रिपोर्ट द्वारा आवश्यक डेटा का चयन कर रहे हैं, तो क्या आपको अस्थायी तालिका में हर पंक्ति पर जाना होगा?

+0

मुझे प्रभावशाली परिणामों के साथ अवसरों पर temp तालिकाओं में अनुक्रमणिका जोड़ने के लिए उपयोगी पाया गया है। इंटरमीडिएट प्रोसेसिंग या जॉन्स इत्यादि हो सकते हैं – gbn

+1

@ जीबीएन: निश्चित रूप से। जब उन्हें आवश्यकता होती है तो मैं उन्हें जोड़ता हूं। –

+0

आप सही हैं यह अनिवार्य हो सकता है। मुझे प्रत्येक प्रक्रिया की जांच करनी होगी। मूल रूप से एप्लिकेशन ने प्राथमिक कुंजी के साथ एक अस्थायी तालिका का उपयोग किया था, लेकिन उपयोगकर्ताओं में से कोई छोटा नहीं था, अब मुझे चिंता है कि अस्थायी तालिका एक बाधा बन जाएगी क्योंकि बहुत से उपयोगकर्ता – DeveloperChris

6

आप एक या अन्य कर दिया था:

  • जोड़ने पी/अनुक्रमित बाद में
  • स्पष्ट रूप से बाधाओं के साथ अस्थायी तालिका की घोषणा।

मैं भी ऐसा होता है तो बजाय 0

SELECT * INTO #temp_copy FROM temp WHERE 1 = 0; 
7

डिजाइन द्वारा शीर्ष, का चयन करें जांच की कमी (पी, FK, अनोखा), चूक, चेक, आदि इसका कारण यह है है बाद से जारी नहीं करता है एक चयन में वास्तव में एक बार में कई तालिकाओं से खींच सकते हैं (खंड से जुड़ने के माध्यम से)। चूंकि चयन में आपके द्वारा निर्दिष्ट तालिका (तालिकाओं) से एक नई तालिका बनाई जाती है, इसलिए एसक्यूएल के पास वास्तव में यह निर्धारित करने का कोई तरीका नहीं है कि आप कौन सी बाधाओं को रखना चाहते हैं, और जिन्हें आप रखना नहीं चाहते हैं।

आप स्वचालित रूप से बाधा उत्पन्न करने के लिए एक प्रक्रिया/स्क्रिप्ट लिख सकते हैं, लेकिन यह शायद न्यूनतम लाभ के लिए बहुत अधिक प्रयास है।

+0

यह समझाने के लिए धन्यवाद, बहुत स्पष्ट है कि मुझे लगता है कि एक बार आप कारण देखते हैं। – DeveloperChris

संबंधित मुद्दे