Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

LastName varchar(SO) NOT NULL




Emp_ID char(4) NOT NULL,

CREATE TABLE Employees

Визначення значень за замовчуванням (DEFAULT)

LastNarne varchar(30) NOT NULL

FirstName varchar(30) NULL,

Emp_ID char(4) NOT NULL,

CREATE TABLE Employees (

)

====================

Всі поля запису повинні бути заповнені (навіть із використанням порожніх значень). Іноді потрібно завантажити в таблицю рядок, але значення якого-небудь поля не відомо (або не існує). Якщо поле допускає порожні значення, можна завантажити рядок з порожнім значенням. Оскільки поля, що допускають порожні значення, небажані, краще визначити для поля значення за замовчуванням (визначити обмеження DEFAULT). Наприклад, як значення за замовчуванням, що використовується, якщо значення не зазначене, для числових полів звичайно задають нуль, а для символьних – ‘ N/A’

Примітка. Визначення DEFAULT в операторі CREATE TABLE розглядається як обмеження, хоча насправді воно не накладає ніяких обмежень. Визначення DEFAULT обговорюється тут, що дозволить продемонструвати альтернативу полям, що допускають порожні значення.

При завантаженні в таблицю рядка з невідомим значенням поля, для якого визначене значення за замовчуванням, ви неявно даєте SQL Server вказівку завантажити в це поле значення за замовчуванням. Якщо поле не допускає порожніх значень і для нього не визначене значення за замовчуванням, необхідно явно задати його значення. У противному випадку SQL Server поверне помилку з повідомленням, що це поле не допускає порожніх значень.

Є два способи визначення значення за замовчуванням:

  • визначити його під час створення самої таблиці (як частина визначення таблиці);
  • додати це визначення до існуючої таблиці (у будь-якого стовпця таблиці воно може бути тільки одне).

У наступному прикладі за допомогою оператора CREATE TABLE створюється таблиця Employees. Жоден із трьох її стовпців не допускає порожніх значень. Однак насправді стовпець FirstName дозволяє ввести невідоме ім'я, оскільки в його визначенні втримується визначення значення за замовчуванням. Для його визначення в операторі CREATE TABLE використається ключове слово DEFAULT.

(

FirstName varchar(30) NOT NULL DEFAULT 'unknown'

)

Існуюче визначення значення за замовчуванням можна модифікувати або видалити. При модифікації визначення значення за замовчуванням за допомогою Transact SQL необхідно спочатку видалити існуюче визначення DEFAULT а потім створити нове визначення з нуля. Неможливо створити визначення DEFAULT у наступних стовпцях:

· с типом даних timestamp;

· із властивостями IDENTITY або ROWGUIDCOL;

· з існуючим визначенням або об'єктом за замовчуванням.

Автоматична нумерація й стовпці з ідентифікатором (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. Розглянемо їх детальніше.




Поделиться с друзьями:


Дата добавления: 2015-06-29; Просмотров: 281; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.