Διαγραφή ενός προσωρινού πίνακα εάν υπάρχει

Έχω δύο γραμμές κώδικα στην SQL που δημιουργούν δύο πίνακες on the fly, πρέπει να κάνω κάτι σαν

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)   

πώς μπορώ να εφαρμόσω αυτή την έννοια για αυτούς τους δύο πίνακες στη διαδικασία μου;

Λύση

Από τον SQL Server 2016 μπορείτε απλά να χρησιμοποιήσετε

 DROP TABLE IF EXISTS ##CLIENTS_KEYWORD

Στις προηγούμενες εκδόσεις μπορείτε να χρησιμοποιήσετε

IF OBJECT_ID('tempdb..##CLIENTS_KEYWORD', 'U') IS NOT NULL
/*Then it exists*/
DROP TABLE ##CLIENTS_KEYWORD
CREATE TABLE ##CLIENTS_KEYWORD
(
   client_id INT
)

Θα μπορούσατε επίσης να εξετάσετε το ενδεχόμενο να περικόψετε τον πίνακα αντί να τον διαγράψετε και να τον δημιουργήσετε ξανά.

IF OBJECT_ID('tempdb..##CLIENTS_KEYWORD', 'U') IS NOT NULL
  TRUNCATE TABLE ##CLIENTS_KEYWORD
ELSE
  CREATE TABLE ##CLIENTS_KEYWORD
  (
     client_id INT
  ) 
Σχόλια (12)

Ελέγξτε για την ύπαρξη ανακαλώντας το 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) 
Σχόλια (0)