Löschen einer temporären Tabelle, wenn sie existiert

Ich habe zwei Codezeilen in SQL, die zwei Tabellen on the fly erstellen, ich muss etwas tun wie

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

meine Zeilen sind die folgenden

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

Wie kann ich dieses Konzept für diese beiden Tabellen in meinem Verfahren anwenden?

Lösung

Ab SQL Server 2016 können Sie einfach

 DROP TABLE IF EXISTS ##CLIENTS_KEYWORD

Bei früheren Versionen können Sie

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

Sie könnten auch erwägen, die Tabelle zu kürzen, anstatt sie zu löschen und neu zu erstellen.

IF OBJECT_ID('tempdb..##CLIENTS_KEYWORD', 'U') IS NOT NULL
  TRUNCATE TABLE ##CLIENTS_KEYWORD
ELSE
  CREATE TABLE ##CLIENTS_KEYWORD
  (
     client_id INT
  ) 
Kommentare (12)

Prüfen Sie das Vorhandensein, indem Sie seine object_id abrufen:

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

Was Sie wollten, ist:

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) 

Da Sie die Tabelle immer erstellen werden, unabhängig davon, ob die Tabelle gelöscht wird oder nicht, ist eine leicht optimierte Lösung:

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) 
Kommentare (0)