Ik heb twee regels code in SQL die twee tabellen on the fly maken, ik moet iets doen als
IF TABLE EXISTS
DROP IT AND CREATE IT AGAIN
ELSE
CREATE IT
Mijn lijnen zijn de volgende
CREATE TABLE ##CLIENTS_KEYWORD(client_id int)
CREATE TABLE ##TEMP_CLIENTS_KEYWORD(client_id int)
hoe kan ik dat concept voor deze twee tabellen in mijn procedure toepassen?
Vanaf SQL Server 2016 kunt u gewoon gebruik maken van
DROP TABLE IF EXISTS ##CLIENTS_KEYWORD
Op eerdere versies kunt u gebruik maken van
IF OBJECT_ID('tempdb..##CLIENTS_KEYWORD', 'U') IS NOT NULL
/*Then it exists*/
DROP TABLE ##CLIENTS_KEYWORD
CREATE TABLE ##CLIENTS_KEYWORD
(
client_id INT
)
U kunt ook overwegen om de tabel in te korten in plaats van te verwijderen en opnieuw te maken.
IF OBJECT_ID('tempdb..##CLIENTS_KEYWORD', 'U') IS NOT NULL
TRUNCATE TABLE ##CLIENTS_KEYWORD
ELSE
CREATE TABLE ##CLIENTS_KEYWORD
(
client_id INT
)
Controleer op het bestaan door zijn object_id op te vragen:
if object_id('tempdb..##clients_keyword') is not null
drop table ##clients_keyword
Waar je om vroeg is:
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)
Aangezien je'de tabel altijd gaat aanmaken, ongeacht of de tabel verwijderd is of niet; een licht geoptimaliseerde oplossing is:
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)