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?
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
)
Prüfen Sie das Vorhandensein, indem Sie seine object_id abrufen:
if object_id('tempdb..##clients_keyword') is not null
drop table ##clients_keyword
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)