[sql] 존재하는 경우 임시 테이블 삭제

즉시 두 개의 테이블을 생성하는 SQL 코드 두 줄이 있습니다.

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

삭제하고 다시 만드는 대신 테이블을 자르는 것도 고려할 수 있습니다.

IF OBJECT_ID('tempdb..##CLIENTS_KEYWORD', 'U') 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) 

테이블이 삭제되었는지 여부에 관계없이 항상 테이블을 생성 할 것이므로; 약간 최적화 된 솔루션은 다음과 같습니다.

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) 


답변