SQL Server(Transact-SQL)에서 전역 임시 테이블(Global Temporary Table)은 세션과 별개로 생성되며, 모든 사용자와 세션이 접근할 수 있는 임시 테이블입니다. 로컬 임시 테이블(#)과 달리, 전역 임시 테이블은 이름 앞에 ##(샵 두 개)을 붙여 생성한다는 점이 특징입니다.
전역 임시 테이블 생성 문법
CREATE TABLE ##테이블명
(
열1 데이터타입 [ NULL | NOT NULL ],
열2 데이터타입 [ NULL | NOT NULL ],
...
);
매개변수 설명
테이블명
생성하려는 전역 임시 테이블의 이름입니다. 반드시 ## 문자로 시작해야 합니다.
열1, 열2
전역 임시 테이블에 생성할 열(column)입니다. 각 열에는 하나의 데이터 타입을 지정해야 하며, NULL 또는 NOT NULL 여부를 설정할 수 있습니다. 아무것도 지정하지 않으면 기본값은 NULL로 적용됩니다.
사용 가능한 데이터 타입은 SQL Server 공식 데이터 타입 목록을 참고하시기 바랍니다.
참고 사항
- 전역 임시 테이블의 이름은 항상 ##로 시작합니다(예: ##nhanvien).
- 전역 임시 테이블은 tempdb 데이터베이스에 저장됩니다.
- 해당 테이블을 참조하던 모든 사용자가 세션 연결을 종료하면, SQL Server가 자동으로 테이블을 삭제합니다.
예제
CREATE TABLE ##nhanvien
(
id_nhanvien INT PRIMARY KEY,
ho VARCHAR(50) NOT NULL,
ten VARCHAR(50),
luong MONEY
);
위 예제에서 CREATE TABLE 명령문은 SQL Server에 다음 4개의 열을 가진 ##nhanvien이라는 전역 임시 테이블을 생성합니다.
- id_nhanvien: INT 데이터 타입, NULL 값을 허용하지 않음
- ho: VARCHAR(50) 데이터 타입(최대 50자), NULL 값을 허용하지 않음
- ten: VARCHAR(50) 데이터 타입, NULL 값 허용
- luong: MONEY 데이터 타입, NULL 값 허용
또한 ##nhanvien 테이블의 기본 키(PRIMARY KEY)는 id_nhanvien 열로 지정되어 있습니다.
##nhanvien 테이블은 tempdb에 저장되며, 이 테이블을 참조하던 모든 사용자가 SQL Server 세션에서 연결을 끊는 시점에 자동으로 삭제됩니다. 따라서 여러 세션에서 일시적으로 데이터를 공유해야 하는 경우에 전역 임시 테이블이 유용하게 활용됩니다.