SQL PostgreSQL 外键语法

SQL PostgreSQL 外键语法

在本文中,我们将介绍 SQL PostgreSQL 中的外键语法,了解如何使用外键来建立表之间的关系和约束。

阅读更多:SQL 教程

什么是外键?

外键是一种用来建立表与表之间关系的约束。它定义了一个或多个列,这些列的值必须与另一个表中的主键或唯一约束的值相匹配。通过定义外键关系,我们可以保证数据的完整性和一致性。

外键语法

PostgreSQL 中,我们使用 FOREIGN KEY 关键字来定义外键。外键通常和 REFERENCES 关键字配合使用。具体的语法如下:

CREATE TABLE 表名 (
  列名 数据类型,
  ...
  CONSTRAINT 约束名 FOREIGN KEY (列名) REFERENCES 引用表名 (引用列名) [ON DELETE 动作] [ON UPDATE 动作]
);
SQL
  • 表名 是要创建外键的表的名称;
  • 列名 是要定义外键的列的名称;
  • 约束名 是外键约束的名称,可以根据需要自定义;
  • 引用表名 是被引用的表的名称;
  • 引用列名 是被引用的表中与外键关联的列的名称;
  • ON DELETE 动作 定义了在引用表中删除行时要执行的动作,可以是 CASCADESET NULLSET DEFAULTRESTRICT
  • ON UPDATE 动作 定义了在引用表中更新行时要执行的动作,可以是 CASCADESET NULLSET DEFAULTRESTRICT

以下是一个示例,创建了两个表 UsersOrders,并在 Orders 表的 user_id 列上创建了一个外键约束:

CREATE TABLE Users (
  user_id SERIAL PRIMARY KEY,
  username VARCHAR(255)
);

CREATE TABLE Orders (
  order_id SERIAL PRIMARY KEY,
  order_number INTEGER,
  user_id INTEGER,
  CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES Users (user_id)
);
SQL

在上面的示例中,Users 表有一个 user_id 列,它是主键列。Orders 表有一个 user_id 列,它是外键列,与 Users 表中的 user_id 列相关联。

外键约束动作

在创建外键时,我们可以指定在引用表中的操作执行时应采取的动作。下面是几个常用的外键约束动作:

  • CASCADE 动作表示当引用表中的行被删除或更新时,相关的行也将被删除或更新;
  • SET NULL 动作表示当引用表中的行被删除或更新时,外键列的值将被设置为 NULL;
  • SET DEFAULT 动作表示当引用表中的行被删除或更新时,外键列的值将被设置为默认值;
  • RESTRICT 动作表示当引用表中的行被删除或更新时,将会失败并抛出错误。

下面是一个示例,其中定义了 CASCADE 动作:

CREATE TABLE Orders (
  order_id SERIAL PRIMARY KEY,
  order_number INTEGER,
  user_id INTEGER,
  CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES Users (user_id) ON DELETE CASCADE ON UPDATE CASCADE
);
SQL

在上面的示例中,当 Users 表中的某个行被删除或更新时,与之相关联的 Orders 表中的行也将被删除或更新。

禁用和启用外键约束

有时,在操作数据时,我们可能需要暂时禁用外键约束。在 PostgreSQL 中,我们可以使用以下语句来禁用和启用外键约束:

-- 禁用外键约束
ALTER TABLE 表名 DISABLE TRIGGER ALL;

-- 启用外键约束
ALTER TABLE 表名 ENABLE TRIGGER ALL;
SQL

总结

在本文中,我们介绍了 SQL PostgreSQL 中的外键语法。我们了解了如何使用 FOREIGN KEY 关键字和 REFERENCES 关键字定义外键约束,并给出了示例说明。我们还学习了如何指定外键约束动作以及如何禁用和启用外键约束。通过使用外键,我们可以建立表之间的关系和约束,确保数据的完整性和一致性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册