Отбрасывать временную таблицу, если она существует
У меня есть две строки кода в SQL, которые создают две таблицы на лету, мне нужно сделать что-то вроде
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
Из SQL Server 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
)
Ответ 2
Проверьте наличие, извлекая его object_id:
if object_id('tempdb..##clients_keyword') is not null
drop table ##clients_keyword
Ответ 3
Что вы просили:
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)