gpt4 book ai didi

数据库内部 : implementation of a foreign key constraint

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:51 24 4
gpt4 key购买 nike

例如,在 PostgreSQL 中外键是如何实现的?

我注意到在创建外键时涉及大量散列,因此我假设在引用主键列的外键列上创建基于散列的索引。如果是这样(例如,当我们想从引用表中删除一行时——这个带有主键的行或所谓的主表)我们可以很容易地检查引用表中的行是否实际被引用。而且,可能DBMS要求被引用的主键列上至少有一个B+树索引,因为当我们要向引用表中插入新行时,我们可以很容易地检查是否存在具有所需主键值的行在引用表中。一些消息来源声称触发器用于确保外键约束。

最佳答案

在 Postgres 中,主表中的引用列需要具有 UNIQUEPRIMARY KEY 约束。 Per documentation:

The referenced columns must be the columns of a non-deferrable unique or primary key constraint in the referenced table.

这两者目前总是使用 btree 索引实现。所以在引用的列上总是有一个 btree 索引:

引用列根本不需要索引。如果主表中的行永远不会更新或删除,这可能就足够了。否则,引用列也应该被索引,但这不是由系统强制执行的。这只是关于性能优化,而不是数据完整性。

FK 约束本身的实际实现是系统目录中的一个条目pg_constraint ,一个特殊的内部触发器和另一个条目 pg_depend .

关于数据库内部 : implementation of a foreign key constraint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29065148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com