개발/기타

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 데이터 타입을 지원하지 않는다.

📖 출처


참조 : https://docs.microsoft.com/en-us/sql/t-sql/data-types/uniqueidentifier-transact-sql?view=sql-server-ver15