删除一个临时表(如果存在)
我有两行代码在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)