Внешний ключ - это столбец или группа столбцов таблицы, которые содержат значения, соответствующие значениям первичного ключа той же самой или другой таблицы. Каждый внешний ключ объявляется с использованием предложения foreign key, объединенного с предложением references.
Предложение foreign key имеет следующую форму:
[constraint с_пате]
[ [foreign key] ({col_namel), ...)] references table_name ({col_name2}, ...) [on delete (no action | cascade | set null | set default}] [on update (no action | cascade | set null | set default}]
Предложение foreign key явно определяет все столбцы, которые принадлежат внешнему ключу. Предложение references задает имя таблицы со всеми столбцами, которые входят в состав первичного ключа. Количество и типы данных столбцов в предложении foreign key должны соответствовать количеству и соответствующим типам данных столбцов в предложении references (и, разумеется, все они должны соответствовать количеству и типам данных столбцов первичного ключа таблицы, на которую осуществляется ссылка).
Таблица, которая содержит внешний ключ, называется дочерней таблицей, а таблица, содержащая соответствующий первичный ключ, называется родительской таблицей или главной таблицей. Пример 5.10 показывает спецификацию внешнего ключа в таблице works_on базы данных sample.
Таблица workson в примере 5.10 задана с двумя декларативными ограничениями целостности: prim_works и foreignworks. Оба ограничения являются ограничениями на уровне таблицы, где вначале задается первичный ключ, а затем внешний ключ таблицы workson. Далее, ограничение foreignworks определяет таблицу employee как родительскую таблицу, а ее столбец empno как первичный ключ, соответствующий столбцу с тем же именем в таблице works_on.
Предложение foreign key может быть опущено, если внешний ключ определяется как ограничение на уровне столбца, потому что столбец, для которого создается ограничение, является неявным столбцом в «списке» для внешнего ключа, а ключевое слово references является достаточным для указания того, какой тип имеет это ограничение. Максимальное количество ограничений внешнего ключа для одной таблицы - 63.
Объявление внешних ключей в таблицах базы данных дополняется наличием другого важного ограничения целостности: ссылочной целостности, описываемой далее.