2011-08-31 30 views
73

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

IF TABLE EXISTS 
    DROP IT AND CREATE IT AGAIN 
ELSE 
    CREATE IT 

मेरी लाइनों की तरह कुछ करने की ज़रूरत है निम्नलिखित हैं

CREATE TABLE ##CLIENTS_KEYWORD(client_id int)  
CREATE TABLE ##TEMP_CLIENTS_KEYWORD(client_id int) 

मैं अपनी प्रक्रिया में इन दो तालिकाओं के लिए उस अवधारणा को कैसे लागू कर सकता हूं?

+1

संभव डुप्लिकेट [? क्या यह निर्धारित करने के लिए एक अस्थायी तालिका एसक्यूएल सर्वर में मौजूद रहने पर सबसे अच्छा तरीका है] (http://stackoverflow.com/questions/2649/whats-the-best -वे-टू-निर्धारित-अगर-अस्थायी-तालिका-मौजूद-इन-एसक्यूएल-सर्वर) –

+0

संभावित डुप्लिकेट [जांच करें कि temp तालिका मौजूद है या हटाएं यदि यह temp तालिका बनाने से पहले मौजूद है] (http: // stackoverflow .com/प्रश्न/659051/चेक-if-temp-table-exist-and-delete-if-it-exist-before-create-a-temp-table) – bobs

उत्तर

143
एसक्यूएल सर्वर 2016 से

तुम सिर्फ उपयोग कर सकते हैं

DROP TABLE IF EXISTS ##CLIENTS_KEYWORD 

पिछले संस्करणों पर आप

IF OBJECT_ID('tempdb..##CLIENTS_KEYWORD') IS NOT NULL 
    /*Then it exists*/ 
    DROP TABLE ##CLIENTS_KEYWORD 

CREATE TABLE ##CLIENTS_KEYWORD 
    (
    client_id INT 
) 

उपयोग कर सकते हैं आप तालिका छोटा बजाय बजाय छोड़ने और बहुत सारे विचार कर सकते हैं।

IF OBJECT_ID('tempdb..##CLIENTS_KEYWORD') IS NOT NULL 
    TRUNCATE TABLE ##CLIENTS_KEYWORD 
ELSE 
    CREATE TABLE ##CLIENTS_KEYWORD 
    (
     client_id INT 
    ) 
+0

क्या आप इस दृष्टिकोण के नीचे छंटनी भी पोस्ट कर सकते हैं, यह हो सकता है बेहतर के लिए मेरी मदद करें :) धन्यवाद – user710502

+1

@user। SQL सर्वर के कौन-सा संस्करण पर कर रहे हैं - जब मैं यह निष्पादित यह कहा गया है कि ## CLIENTS_KEYWORD गलत ऑब्जेक्ट नाम –

+0

हम्म देखते हैं? मैं एसक्यूएल सर्वर 2008 पर हूं और (मुझे लगता है) दोनों ने इस मामले के लिए परीक्षण किया कि टेबल किया गया था और अस्तित्व में नहीं था। इसे 'EXEC' में बनाने को लपेटने की आवश्यकता हो सकती है, इसलिए पार्सर पिछले संस्करणों पर शिकायत नहीं करता है। अर्थात का उपयोग 'EXEC ('टेबल बनाएं ## CLIENTS_KEYWORD (client_id INT)')' – user710502

9

यह पुन: प्राप्त करने से होने की जाँच object_id है:

if object_id('tempdb..##clients_keyword') is not null 
    drop table ##clients_keyword 
0

आप के लिए क्या पूछा है:

IF OBJECT_ID('tempdb..##CLIENTS_KEYWORD') IS NOT NULL 
    BEGIN 
     DROP TABLE ##CLIENTS_KEYWORD 

     CREATE TABLE ##CLIENTS_KEYWORD(client_id int) 

    END 
ELSE 
    CREATE TABLE ##CLIENTS_KEYWORD(client_id int) 

IF OBJECT_ID('tempdb..##TEMP_CLIENTS_KEYWORD') IS NOT NULL 
    BEGIN 
     DROP TABLE ##TEMP_CLIENTS_KEYWORD 

     CREATE TABLE ##TEMP_CLIENTS_KEYWORD(client_id int) 

    END 
ELSE 
    CREATE TABLE ##TEMP_CLIENTS_KEYWORD(client_id int) 

जब से तुम हमेशा तालिका बनाने के लिए, चाहे जा रहे हैं तालिका हटा दी गई है या नहीं; एक से थोड़ा अनुकूलित समाधान है:

IF OBJECT_ID('tempdb..##CLIENTS_KEYWORD') IS NOT NULL 
    DROP TABLE ##CLIENTS_KEYWORD 

CREATE TABLE ##CLIENTS_KEYWORD(client_id int) 

IF OBJECT_ID('tempdb..##TEMP_CLIENTS_KEYWORD') IS NOT NULL 
    DROP TABLE ##TEMP_CLIENTS_KEYWORD 

CREATE TABLE ##TEMP_CLIENTS_KEYWORD(client_id int) 
की
संबंधित मुद्दे