删除一个临时表(如果存在)

我有两行代码在SQL中创build两个表,我需要做类似的事情

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') IS NOT NULL /*Then it exists*/ DROP TABLE ##CLIENTS_KEYWORD CREATE TABLE ##CLIENTS_KEYWORD ( client_id INT ) 

您也可以考虑截断表而不是删除和重新创build。

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

通过检索它的object_id来检查是否存在:

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

你要求的是:

 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) 

既然你总是要创build表,不pipe表是否被删除, 稍微优化的解决scheme是:

 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)