引用完整性

引用完整性指的是表之间的关系。由于数据库中每一表都必须具有主键,因此此主键可出现在其他的表中,这是因为它与那些表内数据的关系。当来自一个表的主键出现在另一表中时,将它称之为外键

外键连接表并在表之间创建依赖。若干表可形成依赖的层级结构,这样,如果您更改或删除一个表中的行,则您破坏在其他表中行的含义。例如,下图展示 customer 表的 customer_num 列是那个表的主键,以及 orderscust_call 表中的外键。在 orderscust_calls 表中都引用客户编号 106,George Watson™。如果从 customer 表删除客户 106,则破坏三个表以及此特定的客户之间的链接。

图: 演示数据库中的引用完整性


在围绕的文本中描述此图。

当您删除包含主键的行,或以不同的主键更新它时,您破坏了包含那个值作为外键的任何行的含义。引用完整性是外键对主键的逻辑依赖。包含外键的行的完整性依赖于它引用的那行的完整性—包含相匹配的主键的行。

在缺省情况下,数据库服务器不允许您违反引用完整性,且如果在您从子表删除行之前,您尝试从父表删除行,则向您提示错误消息。然而,您可使用 ON DELETE CASCADE 选项来在从父表删除的同时对相应的子表进行删除。请参阅 ON DELETE CASCADE 选项

要定义主键和外键以及它们之间的关系,请使用 CREATE TABLE 和 ALTER TABLE 语句。要获取关于这些语句的更多信息,请参阅 GBase 8s SQL 指南:语法。要获取关于如何构建带有主键和外键的数据模型,请参阅 GBase 8s 数据库设计和实现指南