Значення за замовчанням у реляційній схемі

Будь-яку інструкцію, де визначається назва атрибута і його тип, можна доповнити службовим словом DEFAULT та певним значенням. Цим значенням може бути:

  • NULL;
  • Константа;
  • Інше значення, як-от значення поточного моменту часу.

Приклад 5.24. Доповнимо приклад 5.5. Хай треба визначити 2 атрибути зі значеннями по замовчанню.

  • Для компонентів атрибуту gender значення по замовчанню – ‘?’.
  • Для компонентів атрибуту birthDate значення по замовчанню – DATE ‘0000-00-00’, тобто „нульова” дата. Рядки 4, 5 рис.5.26 будуть такими:

Приклад 5.25. Нехай у прикладі 5.6 компоненту phone має присвоюватись значення по замовчанню „Номер невідомий”.

ALTER TABLE MovieStar ADD phone CHAR(16) DEFAULT ‘Номер невідомий’

Для зміни типа існуючого поля є інструкція ALTER COLUMN. В ній треба вказати ім'я поля, його тип і (для текстових і двійкових полів) необов'язковий розмір. Наприклад, наступна інструкція дозволяє в таблиці Employee (Співробітники) змінити тип поля PostIndex (Поштовий індекс), спочатку визначений як INTEGER, перевизначивши це поле як текстове завдовжки 10 знаків:

ALTER TABLE Employee ALTER COLUMN PostIndex TEXT(10)

Чи збережуться дані у зміненій колонці? Це залежить від старого і нового типів, від реалізації. Гарантії нема. Тому пропонується такий алгоритм оновлення структури таблиці А в БД:

№пп Дія Інструкція SQL або збережена процедура
  Видалити зв’язки таблиці A ALTER TABLE A DROP CONSTRAINT
  Перейменувати таблицю (напр. У A_Old) sp_rename
  Створити таблицю А нової структури CREATE TABLE A
  Імпортувати по можливості всі дані з таблиці A_Old в A INSERT INTO
  Відновити зв’язки таблиці A, перевіряється цілісність ALTER TABLE A ADD CONSTRAINT
  Видалити A_Old DROP TABLE A_Old

Додатково цей процес корисний тим, що зменшує фрагментованість таблиці, групуючи разом її блоки, що дозволяє ефективно стиснути БД (SHRINK DATABASE).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: