Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Посібник Мова SQL кредитно-модульний.doc
Скачиваний:
35
Добавлен:
01.05.2015
Размер:
1.25 Mб
Скачать

Автоматична нумерація й стовпці з ідентифікатором (identity)

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

Для будь-якої таблиці, значення якої унікальні для всіх комп'ютерів миру, об'єднаних у мережу, можна створити стовпець із глобально унікальним ідентифікатором. Стовпець із гарантовано унікальними значеннями корисний, коли необхідно звести схожі дані з декількох СУБД (наприклад, у системах виписки рахунків, дані яких перебувають у різних дочірніх компаніях, розташованих у різних країнах). Коли на центральному вузлі виконується відомість даних для консолідації й складання звітів, використання глобально унікальних значень виключає збіг ідентифікаторів і номерів рахунку в покупців з різних країн. SQL Server використає стовпці із глобально унікальним ідентифікатором при реплікації відомістю для забезпечення унікальності ідентифікатора рядків серед декількох копій однієї таблиці.

Створення стовпців з ідентифікатором

У будь-якій таблиці може бути створений тільки один стовпець із ідентифікатором або глобально унікальним ідентифікатором.

Властивість identity

Стовпці з ідентифікатором можна реалізувати за допомогою властивості IDENTITY, що дозволяє розроблювачеві додатків задати номер ідентифікатора першого рядка, доданої в таблицю (властивість Identity Seed, вихідне значення ідентифікатора) і інкремент (властивість Identity Increment), що буде додаватися до вихідного значення для визначення послідовних значень ідентифікатора. SQL Server автоматично генерує наступне значення ідентифікатора, додаючи інкремент до вихідного значення. Визначаючи стовпець із ідентифікатором за допомогою властивості IDENTITY, варто врахувати наступні моменти:

  • у таблиці дозволений тільки один стовпець із властивістю IDENTITY. Можливі типи даних для цього стовпця: decimal, int, numeric, smallint, bigint або tinyint;

  • можна задати вихідне значення й інкремент ідентифікатора. Для обох значення за замовчуванням дорівнює 1;

  • стовпець із ідентифікатором не повідомлений допускати порожніх значень, у ньому заборонені визначення або об'єкт DEFAULT;

  • коли встановлена властивість IDENTITY, на цей стовпець можна посилатися в списку вибору за допомогою ключового слова IDENTITYCOL;

  • для визначення того, є чи в таблиці стовпець із властивістю IDENTITY, призначена функція OBJECTPROPERTY; функція COLUMN PROPERTY дозволяє визначити ім'я стовпця IDENTITY.

Наступний приклад створює таблицю Employees за допомогою оператора мови Transact-SQL CREATE TABLE. Жоден стовпець не допускає порожніх значень. Крім тою, стовпець Emp_ID є стовпцем з ідентифікатором. Вихідне значення ідентифікатора дорівнює 101, інкремент - 1.

CREATE TABLE Employees

(

Emp_ID SMALLINT IDENTITY(101,1) NOT NULL,

EmpName VARCHAR(50) NOT NULL

)

Якщо з таблиці, у якій є стовпець із ідентифікатором, часто видаляють рядки, то в послідовності значень ідентифікатора можуть утворитися розриви. Вилучені значення ідентифікатора не використаються повторно. Щоб уникнути подібних розривів, не використайте властивість IDENTITY. Замість нього створіть тригер, що при додаванні рядка визначить нове значення ідентифікатора (на основі існуючих значень у стовпці з ідентифікатором).

SQL Server підтримує чотири головних класи обмежень: PRIMARY KEY,UNIQUE,FOREIGN KEYіCHECK. Розглянемо їх детальніше.