Ограничения столбцов определяют те условия, которым должны удовлетворять значения полей в таблице. Допустимы ограничение уникальности значений полей и ограничение на допустимости null-значений.
Формат:
unique [autoinc] [ null | not null ]
Аргументы:
Аргумент
Значение
unique
Поля, описанные с таким ограничением, будут содержать только уникальные значения. При попытке вставить данные, совпадающие по значению с уже присутствующими, при одиночной операции будет возникать ошибка («Найден дубликат уникального ключа»). Ограничение unique не совместимо с атрибутами столбца nonkey, key, surrogate.
autoinc
Атрибут задает автоинкрементное поле. При добавлении записи во все автоинкрементные поля заносятся очередные значения, равные максимальному значению поля в таблице, увеличенному на единицу. При модификации значения автоинкрементных полей можно будет заменить с учетом, конечно, условия уникальности. Автоинкрементными ключами могут быть только цифровые целочисленные поля.
null
В поле допустимы null-значения.
not null
В поле не допустимы null-значения. При добавлении записей с null-значением будет возникать ошибка «Запрещенное значение поля». Если для поля не указано ограничение null, то в поле null-значения не допустимы
Атрибуты столбцов задают необходимость построения индекса для ускорения доступа к значениям столбца.
Формат:
[ nonkey | key | surrogate ]
Аргументы:
Аргумент
Значение
nonkey
Поле не ключевое, т. е. индексирование значений этого поля не нужно. Атрибут nonkey не совместим с ограничением unique. Поле, которое не имеет атрибута surrogate или key и не имеет ограничения unique, считается не ключевым.
key
Поле ключевое, т. е. необходимо индексировать значения этого поля. Атрибут key не совместим с ограничением unique.
surrogate
Поле суррогатное. Значения этого поля автоматически устанавливается СУБД. Изменять значение этого поля нельзя. Атрибут surrogate не совместим с ограничением unique. Суррогатное поле должно иметь тип dword.
При попытке вставить дублирующееся значение в поле, созданное с ограничением unique, появится ошибка «Unique key doublet value found». Попытки присвоить значение суррогатному и автоинкрементному полю будут проигнорированы, вместо этого после вставки поля будут содержать соответствующие значения сгенерированные СУБД.