Направлено на ограничение целостности ссылок, задает столбец или набор столбцов в качестве внешнего ключа, устанавливает связь с первичным или уникальным ключом в той же самой таблице или между таблицами. Значение внешнего ключа должно совпадать с существующим значением первичного ключа в родительской таблице или быть неопределенным (NULL).
Составной внешний ключ создается с помощью определения на уровне таблицы. Внешний ключ не может быть неопределенным значением.
Внешний ключ описывается комбинацией следующих слов:
FOREIGN KEY – задает значение таблицы как ограничение на уровне таблицы;
REFERENCES – указывает на таблицу и столбец в родительской таблице;
ON DELETE CASCADE- при удалении строки в родительской таблице разрешает удаление зависимых строк в дочерней таблице. Если этот параметр опущен, то строка в родительской таблице не может быть удалена, если на нее имеется ссылка в дочерней таблице.
Синтаксис:
CREATE TABLE имя_таблицы1
(имя_столбца1 тип_данных, FOREIGNKEY(имя_внешнего_ключа) REFERENCES имя_таблицы2 (имя_столбца2),…);
|
|
где имя_таблицы2 (имя_столбца2)- это название подчиненной таблицы и соответствующего первичного ключа, с которым будет связана таблица 1(родительская таблица)
Пример 4. Создание таблицы Friends c внешним ключом Phone:
Friends
(Kod_phon integer,
FOREIGN KEY (Phone) REFERENCES Kollegi (Phonekod),
…);
где Kollegi (Phonekod) – имя таблицы Kollegi, которая содержит столбец Phonekod. Phonekod является первичным ключом.
Ограничение CHECK.
Задает условие, которому должны удовлетворять значения столбца или группы столбцов в каждой строке таблицы. Может быть задано как на уровне таблицы, так и на уровне столбца. В выражениях, которые входят в состав ограничения, запрещены:
- ссылки на псевдостолбцы CURRVAL, NEXTVAL, LEVEL и ROWNUM;
- вызовы функций SYSDATE, UID, USER и USERENV;
- запросы со ссылками на другие значения в других строках.
Пример 5. Использование ограничения CHECK
CHECK(Friends Cod Between 31 and 55)
Где Friends – имя таблицы
Cod – имя столбца
Добавление и удаление ограничений
Добавление ограничения.
Синтаксис команды:
ALTER TABLE имя таблицы1
ADD| MODIFY ([CONSTRANT имя_ограничения] тип_ограничения (имя_столбца) REFERENCES имя_таблицы2;
где тип_ограничения – это первичный или внешний ключ
Пример 6. Добавление в таблицу ограничения – первичный ключ.