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

我有两行代码在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) 

我怎么能在我的程序中使用这两个表的概念?

3 Solutions collect form web for “删除一个临时表(如果存在)”

从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) 
  • 什么是在半径内查找大表的最快方法MySQL(纬度经度)
  • 提高大型表上的SQL Server查询性能
  • mysql更新多列
  • 一个回车的SQL查询返回一个string,并最终删除回车
  • 如何在Ruby On Rails中使用NuoDB手动执行SQL命令
  • 使用SQL Server 2000进行数据透视
  • select比x更多/更less的字符
  • 如何使用SQL Server中的INNER JOIN从多个表中删除
  • 什么是你最有用的数据库标准?
  • 为什么有人在SQL子句中使用WHERE 1 = 1 AND <conditions>?
  • 在存储过程参数列表中使用expression式的结果(例如函数调用)?