Ограничения

Ограничения (constraints) позволяют задавать дополнительные условия проверки вводимых данных, которые СУБД проверяет автоматически. Данные, которые не удовлетворяют условиям, заданным в ограничениях, отвергаются. Например, при вставке новой строки в таблицу она не будет добавлена, если хотя бы одно из значений не удовлетворяет ограничениям. Механизм ограничений позволяет поддерживать данные в непротиворечивом состоянии, соответствующем бизнес-правилам предметной области.

Любое ограничение может быть поименовано, в противном случае, имя для ограничения СУБД создает автоматически. Для явного задания имени, к описанию ограничения следует добавить слева фразу CONSTRAINT имя_ограничения (рекомендуется задавать явные имена для ограничений).

Можно задать ограничения для отдельного столбца или для таблицы в целом.

Ограничения столбца:

NOT NULL/NULL – допустимы ли пустые (неопределенные) значения в столбце, по умолчанию используется значение NULL (т.е. допустимы), что в большинстве случаев не соответствует бизнес-правилам предметной области, поскольку пропуски какой-либо нужной информации обычно не допустимы. Данное ограничение не именуется.

PRIMARY KEY – ограничение первичного ключа, при этом автоматически накладывается ограничение NOT NULL. При задании значений первичного ключа любое значение проверяется на уникальность и при обнаружении дубликата операция прерывается. В таблице может быть только один столбец с ограничением PRIMARY KEY.

UNIQUE– ограничение уникальности (альтернативный ключ), ограничение NOT NULL также накладывается автоматически. Фактически, UNIQUE ничем не отличается от PRIMARY KEY, однако количество столбцов с UNIQUE не ограничено.

REFERENCES имя_главной_таблицы— внешний ключ, который задается для столбца подчиненной (детальной) таблицы. Для значений внешнего ключа автоматически выполняется проверка на существование равного значения первичного ключа главной таблицы. При определении внешнего ключа могут быть дополнительно определены правила обеспечения ссылочной целостности. Например, правилами для удаления являются:

· ON DELETE RESTRICT – запретить удаление строки главной таблицы, если в подчиненной есть хотя бы одна строка, которая на нее ссылается;

· ON DELETE CASCADE – вместе со строкой главной таблицы автоматически удалить все ссылающиеся на нее строки подчиненной таблицы;

· ON DELETE SET NULL – при удалении строки главной таблицы установить во внешнем ключе ссылающихся строк значение NULL (это правило может быть определено только в том случае, если на внешний ключ не наложено ограничение NOT NULL);

· ON DELETE SET DEFAULT – при удалении строки главной таблицы установить во внешнем ключе значение по умолчанию (это правило может быть определено только в том случае, если при определении внешнего ключа задано DEFAULT значение_по_умолчанию).

 

По умолчанию принят запрет удаления строк при наличии ссылок на них (ON DELETE RESTRICT).

Аналогичные правила можно определить для обновления (ON UPDATE …), однако необходимости в них обычно не возникает, т.к. первичные ключи обновлять не принято.

 

CHECK – проверка логических выражений при изменении данных в столбце, например, CHECK (имя_столбца BETWEEN 1 AND 100).

Например:

CREATE TABLE t

(c1 NUMBER(8) DEFAULT 0 NOT NULL CONSTRAINT un UNIQUE,

c2 VARCHAR(100) NOT NULL

)

Создается таблица с именем t, содержащая два столбца: числовой столбец c1, обязательный для заполнения и принимающий значение 0 по умолчанию, все значения этого столбца уникальны (ограничение уникальности имеет имя un) и текстовый столбец c2, обязательный для заполнения текстом, его размер не более 100 символов.








Дата добавления: 2015-08-26; просмотров: 864;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.