我在SQL的两行代码动态创建两个表,我需要做的是这样删除临时表,如果它存在
IF TABLE EXISTS
DROP IT AND CREATE IT AGAIN
ELSE
CREATE IT
我的线下那些
如何在我的程序中将这个概念应用于这两个表格?
我在SQL的两行代码动态创建两个表,我需要做的是这样删除临时表,如果它存在
IF TABLE EXISTS
DROP IT AND CREATE IT AGAIN
ELSE
CREATE IT
我的线下那些
如何在我的程序中将这个概念应用于这两个表格?
从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
)
你也可以在这个方法下面发布截断,它可能会帮助我更好:)谢谢 – user710502
@user。请参阅编辑 –
hmm由于某种原因,当我执行它时,它表示## CLIENTS_KEYWORD是无效的对象名称 – user710502
检查是否存在通过检索它的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)
因为你总是要创建的表,无论该表被删除或不;稍微优化的解决方案是:
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)
的
可能重复[?什么是确定一个临时表中的SQL Server中存在的最佳方式(http://stackoverflow.com/questions/2649/whats-the-best如果临时表存在于sql服务器中) –
[检查临时表是否存在并删除它在创建临时表之前是否存在](http:// stackoverflow .com/questions/659051/check-if-temp-table-exists-and-delete-if-exists-before-creating-temp-table) – bobs