我在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