Використання даних uniqueidentifier

Тип даних uniqueidentifier містить 16-байтові двійкові значення, є ідентифікаторами GUID. Ідентифікатор GUID - це унікальне двійкове число, причому ніякі два комп'ютери в усьому світі не створять два однакових значення GUID. Ідентифікатори GUID в першу чергу використовуються для призначення ідентифікаторів, які повинні бути унікальними в рамках мережі, що містить багато комп'ютерів в різних розташуваннях.

Значення ідентифікатора GUID для стовпця uniqueidentifier зазвичай формується одним із таких способів.

В інструкції Transact-SQL, пакеті або сценарії за допомогою виклику функції NEWID.

У коді програми шляхом виклику функції API-інтерфейсу або методу, який повертає ідентифікатор GUID.

Значення uniqueidentifier зазвичай не визначається як константа. Константу uniqueidentifier можна задати наступним чином.

У символьному форматі: '6F9619FF-8B86-D011-B42D-00C04FC964FF'

Тип даних uniqueidentifier не формує автоматично нові ідентифікатори для рядків, що вставляються, як це робить властивість IDENTITY. Наприклад, щоб отримати нове значення uniqueidentifier. при створенні таблиці необхідно задати пропозицію DEFAULT. вказавши функцію NEWID або NEWSEQUENTIALID. В інструкціях INSERT можна також користуватися функцією NEWID.

Можна скористатися для формування ідентифікаторів GUID функцією NEWSEQUENTIALID, що дозволяє зменшити конфлікти сторінок на кінцевому рівні індексів. Функція NEWSEQUENTIALID може бути використана для стовпців таблиці типу uniqueidentifier тільки з обмеженням DEFAULT.

Стовпці uniqueidentifier можуть містити кілька входжень якогось певного значення uniqueidentifier. якщо для них не були додатково вказані обмеження UNIQUE або PRIMARY KEY. Стовпець зовнішнього ключа, який посилається на первинний ключ типу uniqueidentifier в іншій таблиці, буде містити кілька входжень окремого значення типу uniqueidentifier. якщо кілька рядків посилаються на один і той же первинний ключ в таблиці-джерелі.

Тип даних uniqueidentifier має кілька недоліків.

Значення є довгими і незрозумілими. Тому користувачам складно вводити їх без помилок і ще складніше запам'ятовувати.

Значення є випадковими, в них не можна помістити ніякі послідовності, які зробили б значення більш осмисленими для користувачів.

Не існує способу визначити, в якій послідовності були створені значення типу uniqueidentifier. Вони не пристосовані для використання існуючими додатками, належними на послідовне зростання ключів в послідовності.

Займаючи 16 байт, тип даних uniqueidentifier є відносно великим у порівнянні з іншими типами даних (наприклад з 4-байтовими цілими). Індекси, побудовані на ключах типу uniqueidentifier. можуть працювати повільніше в порівнянні з індексами, де використовуються ключі типу int.

Якщо глобальна унікальність не потрібно або потрібний ключ з послідовно зростаючими значеннями, рекомендується використовувати властивість IDENTITY.

Схожі статті