Ограничения 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), но создание уникального индекса не создает уникального ключа. Если существует вероятность, что вам может понадобиться для использования уникально индексированный столбец или структура в качестве ключа, создайте вместо индекса ограничение.
. ! .
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Ограничения
Ограничения UNIX является многозадачной системой. Это значит, что несколько процессов конкурируют между собой при доступе к различным ресурсам. Для "справедливого" распределения разделяемых ресурсов, таких как память, дисковое пространство и т.п., каждому процессу
Ограничения
Ограничения CVS не является заменой управлению проектами, это всего лишь один из инструментов команды. Также этот инструмент сам по себе не содержит механизмов автоматический сборки (build system), регрессионного тестирования (regression testing), взаимодействия разработчиков (collaboration)
Ограничения
Ограничения Приведенная техника симуляции частичной специализации обладает некоторыми ограничениями по сравнению с «настоящей» частичной специализацией шаблонов классов.Одним из наиболее заметных ограничений является то, что дискриминирующие функции,
2.4.6. Ограничения
2.4.6. Ограничения Имеется ряд ограничений в alpha-версии Falcon. В дальнейшем они постепенно будут сниматься:Не работает SELECT FOR UPDATE. Для Alpha-версии максимальная длина ключа ограничена 1100 байтами. Уровни изоляции Serializable не обеспечиваются. Конфигурация времени ожидания для
2.8.2. Ограничения CSV
2.8.2. Ограничения CSV Важно: тип памяти CSV не поддерживает индексацию.Выделение разделов не обеспечивается для таблиц, использующих CSV. Начиная с MySQL 5.1.12, больше не возможно создать разбитую на разделы таблицу CSV (Глюк
Убрать повторы (Unique)
Убрать повторы (Unique) template ‹class ForwardIterator›ForwardIterator unique(ForwardIterator first, ForwardIterator last);template ‹class ForwardIterator, class BinaryPredicate›ForwardIterator unique(ForwardIterator first, ForwardIterator last, BinaryPredicate binary_pred);unique устраняет все, кроме первого, элементы из каждой последовательной группы равных элементов, указываемые
12.6.7. Операция list::unique()
12.6.7. Операция list::unique() void list::unique();template class BinaryPredicatevoid list::unique( BinaryPredicate pred );Операция unique() удаляет соседние дубликаты. По умолчанию при сравнении используется оператор равенства, определенный для типа элементов контейнера. Например, если даны значения {0,2,4,6,4,2,0}, то после
Ограничения
Ограничения На языке реляционных баз данных любое условие, налагаемое на формат, диапазон значений, содержание или зависимости структуры данных, называется ограничением (constraint). Firebird предоставляет несколько способов для реализации ограничений, включая как формальные,
Ограничения
Ограничения Firebird допускает до 256 определенных пользователем индексов на одну таблицу в версии 1.5 и выше, и 64 в более ранних релизах. Однако это теоретические ограничения, которые могут быть скорректированы за счет размера страницы и фактического размера на диске данных
Ограничения
Ограничения Никакой пользователь не может удалить индекс, кроме его создателя, пользователя SYSDBA или (в POSIX) пользователя с привилегиями root.Определенные системой индексы, созданные автоматически для столбцов, определенных в ограничениях уникального, первичного или
Ограничения
Ограничения При удалении процедуры существуют ограничения.* Только пользователь SYSDBA и владелец процедуры могут ее удалять.* Процедура, находящаяся в использовании в любой другой транзакции, не может быть удалена. Это является особой проблемой в системах, где процедуры
Unique-значения
Unique-значения Иногда при разработке программ возникает потребность в сущности, принимающей лишь несколько значений, характеризующих возможные ситуации. Так, операция чтения может вернуть код результата, значениями которого будут признаки успешной операции, ошибки при
Unique-значения и перечислимые типы
Unique-значения и перечислимые типы Pascal и производные от него языки допускают описание переменной видаcode: ERRORгде ERROR - это "перечислимый тип":type ERROR = (Normal, Open_error, Read_error)Переменная code может принимать только значения типа ERROR. Мы уже видели, как добиться того же самого в ОО-нотации:
У18.2 Однократные функции для эмуляции unique-значений
У18.2 Однократные функции для эмуляции unique-значений Покажите, что в языке без поддержки unique-объявлений результат, аналогичныйvalue: INTEGER is uniqueможно получить, воспользовавшись объявлением видаvalue: INTEGER is once...endгде вам необходимо написать тело однократной функции и все, что