今天,我们宣布外键约束现已正式在 PlanetScale 的任何未分片数据库中上线。

外键约束可以用于在数据库中强制实施参照完整性。在过去两个月的 Beta 测试阶段,已有超过 2,400 个 PlanetScale 数据库启用了外键约束。你可以在 PlanetScale 的文档中了解更多关于外键约束支持的信息。

此前,我们曾写过文章,介绍了我们如何克服技术难题,使外键约束能够与其它功能兼容,例如数据库分支、使用在线 DDL 的非阻塞模式的模式变更、受控部署以及数据库导入等功能。

注意
如果你希望通过分片水平扩展数据库并需要外键约束,可以联系我们,我们愿意与你探讨你的数据库需求以及 PlanetScale 的相关能力。


如何在数据库中启用外键约束

要在你的 PlanetScale 数据库中启用外键约束,进入数据库的“设置”页面,并勾选“允许外键约束”选项框。

在数据库的 “仪表板” 页面,你会看到一个加载动画,显示“正在启用外键约束”。当加载指示不再出现时,你便可以在你的 PlanetScale 数据库中使用外键约束了!

对于大多数情况,外键约束在 PlanetScale 中应该可以正常工作。不过,在某些特定情形下可能会遇到不支持的情况或导致不太理想的行为。在外键约束文档的“限制”部分可以了解更多详情。

如果你还没有现有的 PlanetScale 数据库,但拥有一个启用了外键约束的 MySQL 或 MariaDB 数据库(可通过互联网访问),你也可以使用我们的数据库导入工具将它导入到 PlanetScale 中。


外键 vs 外键约束

外键约束经常被误解为外键,而后者其实从 PlanetScale 最开始上线就已经支持了。

外键是一种逻辑关联关系,用于在关系型数据库中的两个表间通过两个关联列的值建立联系。外键使得你能够基于某些列间的匹配值查找相关的数据。例如,给定一个简单的项目管理表结构,一个名为 tasks 的表可能包含一个名为 project_id 的列,它可以用来根据 projects 表中的 id 列查找相关联的项目。

外键约束是一种数据库结构,它比外键迈进了一步,强制实施外键关系的完整性(即参照完整性)。它确保子表只能引用父表,当父表中存在相关的行时才能建立关联。这有助于保持关联数据的一致性。

仍以上述的例子为例,如果没有定义外键约束,当一个项目被删除时,数据库不会对任何关联的任务采取行动。而如果在 projects 表和 tasks 表之间配置了外键约束,那么数据库引擎可以对这些关联的任务执行级联操作,例如也删除它们,或将 project_id 字段设为 null。

虽然外键约束可以帮助确保参照完整性,但它可能在高并发工作负载中导致性能下降,并且会为数据库引入更多复杂性。和任何数据库功能一样,开发者应权衡使用外键约束的优缺点,以决定它是否适合你的具体应用场景。



外键约束现已正式上线插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.choupangxia.com/2025/09/14/foreign-key-constraints-are-now-generally-available/