Имеются следующие типы ограничений, накладываемых на столбец:
1) PRIMARY KEY – это ограничение требует, чтобы вводимые в
столбец значения были уникальными и отличными от пустых, поскольку
они будут использоваться в качестве первичного ключа, однозначно
идентифицирующего запись; первичный ключ определяется для табли-
цы только единожды;
2) UNIQUE – это ограничение требует, чтобы вводимые в столбец
значения в рамках одной таблицы были уникальными;
3) NOT NULL – это ограничение требует обязательного присутствия
в столбце некоторого значения;
4) CHECK(выражение) – это ограничение позволяет подвергнуть оп-
ределенной проверке вставляемое в столбец значение; если условия, на-
ложенные на вставляемые значения, не выполняются, то значения в
столбец не помещаются;
5) REFERENCES – это ограничение позволяет установить взаимо-
связь значений данного столбца со значениями столбца другой таблицы.
Взаимосвязь обеспечивается использованием следующей конструкции:
REFERENCES имя_таблицы[(имя_столбца)] [ON DELETE CASCADE]
При внесении значения в столбец создаваемой таблицы система будет
автоматически проверять наличие аналогичного значения в указанном
столбце указанной таблицы. При этом естественно, что для обеспечения
однозначности устанавливаемой взаимосвязи все значения, находящиеся
в указанном столбце, на которые производится ссылка, должны иметь
ограничение UNIQUE или PRIMARY KEY. Если в качестве имени
столбца указанной таблицы используется первичный ключ, то имя
столбца можно не указывать. Таблица, на чей столбец ссылается другая
таблица, называется главной, а таблица, ссылающаяся на нее, – подчи-
ненной. Конструкция ON
DELETE CASCADЕ указывает, что при удале-
нии строк в главной таблице автоматически осуществляется удаление
соответствующих строк и в подчиненной таблице.
Ограничения на таблицу во многом напоминают ограничения столб-
ца, но при этом обычно задействуют, как правило, несколько столбцов.
Например, можно задать ограничение PRIMARY KEY, указав список
имен столбцов, тем самым определив
составной первичный ключ. При
этом для столбцов, указываемых в списке, должны быть заданы ограни-
чения UNIQUE и NOT NULL.
Используя следующую форму записи:
FOREIGN KEY (список_имен_столбцов)
REFERENCES имя_таблицы(список_имен_столбцов)
134
[ON DELETE CASCADE]
можно определить
составной внешний ключ для таблицы. Естественно,
что в случае составного внешнего ключа перечень столбцов в подчинен-
ной таблице и перечень столбцов в главной таблице должны совпадать
по количеству, типу данных и порядку следования. Конструкция ON
DELETE CASCADE позволяет обеспечить целостность и непротиворе-
чивость данных при изменениях, которые затрагивают значения столб-
цов главной таблицы, являющихся внешним ключом по отношению к
подчиненной таблице.
Если ограничение CHECK затрагивает значения нескольких столб-
цов, увязывая их в некоторое достаточно сложное условие, то такое ог-
раничение также удобно определить как ограничение на таблицу.
Для генерации и вставки в столбец таблицы уникальных значений
можно создать специально предназначенный для этих целей объект – по-
следовательность. Создание последовательности выполняется с помо-
щью оператора CREATE по следующему упрощенному синтаксису:
CREATE SEQUENCE имя_последовательности
[START WITH начальное_значение] [INCREMENT BY шаг];
В самом простейшем случае генерируется последовательность целых
чисел от 1 до 10
27
с шагом единица. Конструкция INCREMENT BY по-
зволяет указать шаг изменения значений последовательности. Конструк-
ция START WITH позволяет задать начальное значение генерируемой
последовательности, которое при ее отсутствии устанавливается равным
единице. Для вставки в столбец текущего значения последовательности
нужно указать имя_последовательности.СURRVAL, а для вставки в
столбец измененного по правилам формирования последовательности
следующего значения используется имя_последовательности.NEXTVAL.
Последовательности являются самостоятельными объектами БД, одна и
та же последовательность может быть использована для задания уни-
кальных значений столбцов нескольких таблиц; при удалении или моди-
фикации последовательности значения, созданные ею, сохраняются в
таблицах БД.
Достарыңызбен бөлісу: