개발/기타
MSSQL] UNIQUEIDENTIFIER
펭귀니 :)
2021. 2. 16. 09:31
❓ 궁금증
MySQL 데이터베이스를 MSSQL로 마이그레이션(이주)하는 과정이 있었다.
MySQL에서 타입은 int이고 default값은 auto increment로 사용되던 sequence number값의 타입이 uniqueidentifier로 변하고, default값은 newsequentialid로 변했다.
이에 두 RDBMS에서 어떤 차이가 있는지 궁금해서 알아보게 되었다.
MSSQL의 uniqueidentifier 타입
MSSQL 데이터 타입의 한 종류이다.
16바이트의 GUID (Global Unique Identifier)이다.
해당 타입의 컬럼이나 로컬 변수는 아래와 같이 초기화가 가능하다.
- NEWID 또는 NEWSEQUENTIALID를 사용하여 초기화할 수 있다.
- xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 형식의 문자열이고, x는 16진수로 표현된다. 해당 문자열은 유니크하다.
(=, <>, <, >, <=, >=)의 연산자에 의해 대소비교가 가능하다.
(IS NULL, IS NOT NULL)로 NULL 체크가 가능하다.
❓ subscriptions updating와 함께 병합 replication과 transactional replication는 복제할 여러 테이블에서 튜플이 유니크함을 보장하기 위해 uniqueidentifier를 사용한다.
Converting uniqueidentifier Data
다른 사이즈의 character 표현을 uniqueidentifier 타입으로 바꿀 때 주의가 필요하다.
uniqueidentifier는 36개의 characters로 제한되어있으므로, 해당 길이보다 긴 char가 들어오면 truncate된다.
제약 사항
PolyBase와 dwloader loading tool for Parallel Data Warehouse에서는 uniqueidentifier 데이터 타입을 지원하지 않는다.