PostgreSQL 唯一约束2025年3月17日 | 阅读 8 分钟 在本节中,我们将了解 PostgreSQL 唯一约束 的工作原理,它用于确保表中列中的所有值都是唯一的。 PostgreSQL 唯一约束 的示例,如何在多列上创建唯一约束,使用唯一索引添加唯一 约束,以及如何为特定表删除唯一约束。 什么是 PostgreSQL 唯一键约束?在 PostgreSQL 中,唯一约束 用于维护我们存储到表的字段或列中的值的独立性。它与一组列约束或列约束和表约束兼容。 当我们使用唯一约束时,会在一个或多个列上自动生成索引。如果在不同行中向列中添加两个不同的空值,则不会中断唯一约束的规范。 有时,如果我们想确保存储在一个或多个列中的值在整个表中是唯一的,那么一列就不能存储重复值。 例如
当我们使用唯一约束时,每次插入新行时,它都会检查该值是否已存在于表中,如果该值已存在,则拒绝修改并引发错误。更新当前数据时也将遵循类似的步骤。 为什么我们需要在 PostgreSQL 中使用唯一约束
唯一约束与主键唯一约束和 主键 的主要区别如下
如何在 PostgreSQL 中创建唯一约束我们可以借助以下命令创建 PostgreSQL 唯一约束
现在,我们将详细讨论这两个命令。 使用 CREATE TABLE 命令创建唯一约束在 PostgreSQL 中,我们可以借助 CREATE TABLE 命令 生成唯一约束。 创建唯一约束的语法 以下插图用于显示如何使用 CREATE TABLE 命令创建唯一约束 第一个语法用于在表中为一列创建唯一约束 或 我们可以使用第二个插图在表中为多列创建唯一约束 注意:如果我们不定义唯一约束名称,PostgreSQL 会自动为特定列创建名称。因此,建议在生成表时使用约束名称。参数说明 在上面的语法中,我们使用了以下参数,我们将在下表中讨论
使用 Create 命令的 PostgreSQL 唯一约束示例为了理解 PostgreSQL 唯一约束 的工作原理,我们将看下面的示例。 在下面的示例中,我们创建了一个名为 Customers 的新表,其中包含多个列,例如 Customer_ID、Customer_name、Address 和 email_ID。 而 email_id 是唯一列,它唯一地标识 Customer 表中的 email id。 或 我们可以使用以下命令创建 Customers 表 输出 执行上述命令后,我们将收到以下消息窗口,其中显示 Customers 表已成功创建到 jtp 数据库中。 ![]() 成功创建新表 Customers 后,我们将借助 INSERT 命令向其中输入一些值。 输出 执行上述命令后,我们将收到以下消息窗口,其中显示四个值已成功插入到 Customers 表中。 ![]() 现在,我们将向 Customers 表中插入另一行,其中包含重复的 email_id,如下所示 输出 执行上述插入命令后,PostgreSQL 发出了以下错误消息 错误:重复的键值违反了唯一约束 "customers_email_id_key" 详细信息:键 (email_id)=([email protected]) 已存在。 ![]() 在多列上生成唯一约束让我们看一个示例来了解 PostgreSQL 在多列上唯一约束 的工作原理。 假设我们想在多列上指定主键;在这种情况下,我们可以看到下面的 Create 命令 示例,它帮助我们生成一个名为 Customer_info 的新表。 并且列 Cust_username 和 Cust_email 中的值组合将在整个表中是唯一的。列 Cust_username 和 Cust_email 的值不需要是唯一的。 输出 执行上述命令后,我们将收到以下消息窗口,其中显示 Customer_info 表已成功创建到 Jtp 数据库中。 ![]() 使用 ALTER TABLE 命令创建唯一约束并使用唯一索引添加唯一约束我们可以借助 ALTER TABLE 命令在 PostgreSQL 中生成唯一约束,我们还可以使用 PostgreSQL 唯一索引 添加唯一约束。 创建唯一约束的语法 以下插图用于使用 PostgreSQL 中的 ALTER TABLE 命令 创建唯一约束 在上面的语法中,我们使用了以下参数,我们将在下表中讨论
使用 ALTER TABLE 命令的 PostgreSQL 唯一约束示例以及使用唯一索引添加唯一约束在下面的示例中,我们将了解 PostgreSQL 唯一约束 使用 ALTER TABLE 命令 的工作原理,并遵循以下步骤使用唯一索引添加唯一约束。 步骤 1:创建新表 首先,我们将创建一个名为 Student 的新表,该表在表描述中不包含唯一列。 输出 执行上述命令后,我们将收到以下消息窗口,其中显示 Student 表已成功创建到 Jtp 数据库中。 ![]() 步骤2:创建唯一索引 创建 Student 表后,我们将基于 Student_email 列创建新索引。 有关 PostgreSQL 唯一索引的更多信息,请参阅以下链接 输出 执行上述命令后,我们将收到以下消息窗口,显示特定索引已成功创建。 ![]() 步骤3:向指定表添加唯一约束 成功创建 Student_Student_email 索引后,我们将借助 ALTER TABLE 命令向 Student 表添加唯一约束,如下所示 输出 执行上述命令后,我们将收到以下消息窗口: Student 表已成功更改。 ![]() 在上面的截图中,我们可以看到 PostgreSQL 发出了一条通知,其中说 ALTER TABLE / ADD CONSTRAINT USING INDEX 会将索引 "student_student_email" 重命名为 "unique_student_email"。 注意
输出 执行上述命令后,我们将得到以下输出,其中我们可以在事务中找到值为 idle 和 active 的 State 列。而 idle 状态 定义了这些是未完成的事务。 ![]() 如何删除 PostgreSQL 唯一约束在 PostgreSQL 中,我们可以借助 ALTER TABLE 命令删除唯一约束。 删除唯一约束的语法 以下插图用于使用 PostgreSQL 中的 ALTER TABLE 命令删除唯一约束 在上面的语法中,我们使用了以下参数,我们将在下表中讨论
使用 ALTER TABLE 命令删除 PostgreSQL 唯一约束的示例 让我们看一个从特定表中删除唯一约束的示例。 为此,我们以 Customer_info 表为例,借助 ALTER TABLE 命令删除唯一约束,如下所示 输出 成功执行上述命令后,我们将收到以下消息窗口,显示唯一约束 (uc_Cust_username_Cust_email) 已从 Customer_info 表中删除。 ![]() 概述在 PostgreSQL 唯一约束 部分中,我们学习了以下主题
下一个主题PostgreSQL 检查约束 |
我们请求您订阅我们的新闻通讯以获取最新更新。