반응형
임시 테이블이 있는 경우 해당 테이블 삭제
나는 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
반응형
'programing' 카테고리의 다른 글
데이터베이스에 암호를 저장하는 기본 방법 (0) | 2023.07.20 |
---|---|
다른 스키마에 있는 DBLINK를 사용하여 Oracle에서 선택하는 방법은 무엇입니까? (0) | 2023.07.20 |
저장된 R 객체를 새 객체 이름으로 로드할 수 있습니까? (0) | 2023.07.20 |
루비: 연결 없이 여러 줄의 문자열을 쓸 수 있습니까? (0) | 2023.07.20 |
UnicodeDecodeError: 'ascii' 코덱이 위치 13에서 바이트 0xe2를 디코딩할 수 없음: 순서가 범위에 없음(128) (0) | 2023.07.20 |