Как реализован внешний ключ, например, в PostgreSQL?
Я заметил, что при создании внешнего ключа задействовано много хеширования, поэтому я полагаю, что индекс на основе хеша создается в столбце внешнего ключа, который ссылается на столбец первичного ключа. Если это так (например, когда мы хотим удалить строку из указанной таблицы - с первичным ключом или с так называемой главной таблицей), мы можем легко проверить, действительно ли имеется ссылка на строку из указанной таблицы. Более того, вероятно, СУБД требует, чтобы в указанном столбце первичного ключа был хотя бы индекс дерева B +, потому что, когда мы хотим вставить новую строку в ссылочную таблицу, мы можем легко проверить, существует ли строка с требуемым значением первичного ключа. в указанной таблице. Некоторые источники утверждают, что триггер используется для обеспечения ограничения внешнего ключа.