PostgreSQL 中如何定义外键?

推荐答案

在 PostgreSQL 中,可以通过以下两种方式定义外键:

  1. 在创建表时定义外键

  2. 在已有表中添加外键

本题详细解读

1. 在创建表时定义外键

在创建表时,可以直接在列定义中使用 REFERENCES 关键字来指定外键。这种方式简洁明了,适合在创建表时就明确外键关系的情况。

  • 语法

  • 示例

    在这个示例中,orders 表中的 product_id 列是一个外键,它引用了 products 表中的 product_id 列。

2. 在已有表中添加外键

如果表已经存在,可以使用 ALTER TABLE 语句来添加外键约束。这种方式适合在表已经创建后,需要添加外键的情况。

  • 语法

  • 示例

    在这个示例中,fk_product 是外键约束的名称,product_idorders 表中的外键列,它引用了 products 表中的 product_id 列。

3. 外键约束的行为

外键约束可以定义在删除或更新时的行为,常见的行为包括:

  • CASCADE:当主表中的记录被删除或更新时,自动删除或更新从表中的相关记录。

  • SET NULL:当主表中的记录被删除或更新时,将从表中的外键列设置为 NULL

  • RESTRICT:阻止删除或更新主表中的记录,如果从表中有相关记录存在。

  • NO ACTION:与 RESTRICT 类似,但在某些情况下可能会有不同的行为。

  • 示例

    在这个示例中,当 products 表中的某个 product_id 被删除时,orders 表中所有引用该 product_id 的记录也会被自动删除。

纠错
反馈