programing

임시 테이블이 있는 경우 해당 테이블 삭제

magicmemo 2023. 7. 20. 21:51
반응형

임시 테이블이 있는 경우 해당 테이블 삭제

나는 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) 

언급URL : https://stackoverflow.com/questions/7259285/drop-a-temporary-table-if-it-exists

반응형