FOREIGN KEY ( record_book )
REFERENCES students ( record_book )
);
Конечно, число атрибутов и их типы данных во внешнем ключе ссылающейся табли-
цы и в первичном ключе ссылочной таблицы должны быть согласованы.
Ограничению внешнего ключа можно присвоить наименование, как и любому дру-
гому ограничению, с помощью ключевого слова CONSTRAINT.
При наличии связей между таблицами, организованных с помощью внешних клю-
чей, необходимо придерживаться определенной политики при выполнении опера-
ций удаления и обновления строк в ссылочных таблицах, т. е. в тех, на которые ссы-
лаются другие таблицы. В нашем примере ситуация принятия «политического» ре-
шения возникает при удалении строк из таблицы «Студенты» (students). Конечно, ес-
ли бы было принято решение хранить всю историю успеваемости студентов, в том
числе и отчисленных, тогда строки из таблицы students вообще не удалялись бы. Но,
упрощая реальную ситуацию, мы решили историю не хранить. Тогда возникает за-
кономерный вопрос: что делать со строками в таблице «Успеваемость» (progress), ко-
торые ссылаются на удаляемую строку в таблице «Студенты» (students)? Возможны
несколько вариантов.
1. Удаление связанных строк из таблицы «Успеваемость» (progress), что означает,
что при отчислении студента будет удаляться вся история его успехов в учебе.
Эта операция называется каскадным удалением и для ее реализации в опреде-
ление внешнего ключа добавляются ключевые слова ON DELETE CASCADE. На-
пример:
Достарыңызбен бөлісу: