수색…


비고

임시 테이블은 실제로 매우 유용합니다.

테이블은 런타임에 생성 될 수 있으며 일반 테이블에서 수행되는 모든 작업을 수행 할 수 있습니다.

이러한 테이블은 tempdb 데이터베이스에서 만들어집니다.

언제 사용합니까?

  1. 복잡한 결합 작업을 수행해야합니다.

  2. 우리는 저장 프로 시저에서 많은 수의 행 조작을 수행합니다.

  3. 커서의 사용을 바꿀 수 있습니다.

따라서 성능이 향상됩니다.

로컬 임시 테이블

  • 현재 연결이 지속될 때까지 사용할 수 있습니다.

    사용자가 연결을 끊으면 자동으로 삭제됩니다.

    이름은 # (#temp)로 시작해야합니다.

     CREATE TABLE #LocalTempTable(
                    StudentID      int,
                    StudentName    varchar(50), 
                    StudentAddress varchar(150))
    
insert into #LocalTempTable values ( 1, 'Ram','India');

select * from #LocalTempTable

우리가 질의 창을 닫고 다시 열어 삽입하고 선택하려고하면이 모든 명령문을 실행 한 후에 오류 메시지가 표시됩니다.

“Invalid object name #LocalTempTable”

전역 임시 테이블

  • ## (## temp)로 시작합니다.

    사용자가 모든 연결을 끊을 경우에만 삭제됩니다.

    영구 테이블처럼 작동합니다.

    CREATE TABLE ##NewGlobalTempTable(
                   StudentID      int,
                   StudentName    varchar(50), 
                   StudentAddress varchar(150))
    
    Insert Into ##NewGlobalTempTable values ( 1,'Ram','India');
    Select * from ##NewGlobalTempTable
    

참고 : 권한 수준과 관계없이 데이터베이스의 모든 사용자가 볼 수 있습니다.

임시 테이블 삭제

임시 테이블에는 고유 ID가 있어야합니다 (세션 내, 로컬 임시 테이블 또는 글로벌 임시 테이블의 경우 서버 내에서). 이미 존재하는 이름을 사용하여 테이블을 만들려고하면 다음 오류가 반환됩니다.

There is already an object named '#tempTable' in the database.

조회가 임시 테이블을 생성하고이를 두 번 이상 실행하려면 테이블을 다시 생성하기 전에 테이블을 제거해야합니다. 이 기본 구문은 다음과 같습니다.

drop table #tempTable

테이블이 존재하기 전에 (예 : 구문의 첫 번째 실행시)이 구문을 실행하면 다른 오류가 발생합니다.

Cannot drop the table '#tempTable', because it does not exist or you do not have permission.

이를 피하기 위해 테이블을 삭제하기 전에 테이블이 이미 존재하는지 확인할 수 있습니다. 예를 들면 다음과 같습니다.

IF OBJECT_ID ('tempdb..#tempTable', 'U') is not null DROP TABLE #tempTable


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow