Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Ограничения UNIQUE
Ограничения UNIQUE
Ограничение UNIQUE, как и ограничение первичного ключа, гарантирует, что никакие две строки не будут иметь то же значение указанного столбца или группы столбцов. Вы можете объявить для таблицы более одного ограничения UNIQUE, но оно не может использовать тот же набор столбцов, который был использован для ограничения PRIMARY KEY или другого UNIQUE.
Ограничение UNIQUE фактически создает уникальный ключ, который виртуально имеет те же возможности, что и первичный ключ. Он может быть выбран как управляющий ключ для ограничения ссылочной целостности. Это делает его полезным в ситуациях, когда вы определяете небольшой суррогатный первичный ключ для его атомарности и улучшения производительности в соединениях и операциях поиска, но при этом хотите сохранить режим формирования альтернативной связи внешнего ключа с уникальным ключом для нерегулярного использования.
В Firebird 1.0.x атрибут NOT NULL должен быть применен для всех столбцов, с которыми оперирует ограничение UNIQUE.
Как и ограничение PRIMARY KEY, UNIQUE создает свой постоянный уникальный индекс для поддержания его правил. Правила именования ограничения и индекса соответствует тем же правилам поведения, применимым к другим ключам. Следующий пример isql иллюстрирует именование в Firebird 1.5:
SQL> CREATE TABLE TEST_UQ (
CON> ID BIGINT NOT NULL,
CON> DATA VARCHAR(10),
CON> DATA_ID BIGINT NOT NULL);
SQL> COMMIT;
SQL> ALTER TABLE TEST_UQ
CON>ADD CONSTRAINT PK_TEST_UQ PRIMARY KEY(ID),
CQN>ADD CONSTRAINT UQ1_DATA UNIQUE(DATA_ID) ;
SQL> COMMIT;
SQL> SHOW TABLE TEST_UQ;
ID BIGINT NOT NULL
DATA VARCHAR(10) NULLABLE
DATA_ID BIGINT NOT NULL
CONSTRAINT PK_TEST_UQ:
Primary key (ID)
CONSTRAINT UQ1_DATA:
Unique key (DATA_ID)
SQL> SHOW INDICES TEST_UQ;
PK_TEST_UQ UNIQUE INDEX ON TEST_UQ(ID)
UQ1_DATA UNIQUE INDEX ON TEST_UQ(DATA_ID)
SQL>
! ! !
ПРИМЕЧАНИЕ. Запомните следующее заклинание: индекс не является ключом. Вы можете создавать уникальные индексы (подробности см. в главе 18), но создание уникального индекса не создает уникального ключа. Если существует вероятность, что вам может понадобиться для использования уникально индексированный столбец или структура в качестве ключа, создайте вместо индекса ограничение.
. ! .
- Ограничения целостности
- Ограничения
- 4. Ограничения ссылочной целостности
- Выявить возможные ограничения
- Unique-значения и перечислимые типы
- Недостатки и ограничения
- Погоны как функционал самоограничения
- Ограничения метода отображения файлов
- 12.1. Ограничения по времени
- 8.4.6. Ограничения на вычет расходов для платежей в офшорные юрисдикции
- 5.18.5 Ограничения на IP-адрес
- Листинг 8.4. (limit-cpu.c) Задание ограничения на использование нейтрального процессора