PostgreSQL CHECK 约束17 Mar 2025 | 6 分钟阅读 在本节中,我们将了解PostgreSQL 检查约束的工作原理,该约束用于确保表中一列或一个字段中的所有值都满足特定情况。 PostgreSQL 检查约束的示例, 以及如何为新表和现有表创建检查约束。 什么是 PostgreSQL CHECK 约束?在PostgreSQL中,检查约束可以通过单独的名称来定义。 它用于控制正在插入的列的值。 它允许我们验证要存储到记录中的条件。 如果该语句为假,则数据会破坏约束,该约束不会保存在表中。 换句话说,我们可以说PostgreSQL CHECK 约束用于确保表中一列或一个字段中的所有值都满足某些条件。 例如, 检查约束必须与布尔表达式匹配才能在将值插入或更新到该列之前计算这些值。 如果这些值保留了检查约束,PostgreSQL 将更新或插入这些值到列中。 否则,PostgreSQL 将放弃修改并引发约束违规错误。 使用创建表语句创建 CHECK 约束的语法 以下示例用于展示我们如何使用CREATE TABLE 命令创建CHECK 约束 参数说明 在上面的语法中,我们使用了以下参数,我们将在下表中讨论
PostgreSQL CHECK 约束的示例为了了解PostgreSQ CHECK 约束的工作原理, 我们将看下面的示例。 当使用 CREATE TABLE 命令指定表的结构时,通常可以使用CHECK 约束。 在下面的示例中,我们创建一个名为Worker的新表,其中包含多个列,例如Worker_ID、Worker_name、DOB、Joining_date 和 Salary。 但是,在创建Worker表之前,我们将使用DROP TABLE 命令来检查 Jtp 数据库中是否已经存在类似的表。 输出 执行上述命令后,我们将收到以下窗口消息:Worker 表不存在。 ![]() 现在,我们将使用 CREATE 命令创建Worker表,如下所示 输出 执行上述命令后,我们将收到下面的消息窗口,显示Worker 表已成功创建到 jtp 数据库中。 ![]() 在上面的Worker表中,我们使用了以下三个 CHECK 约束
成功创建Worker后,我们将借助 INSERT 命令输入一些值。 输出 执行上述命令后,PostgreSQL 出现了以下错误,因为我们在Salary列中插入了负薪水值 (-300000)。 错误:关系“worker”的新行违反了检查约束“worker_salary_check”详细信息:失败的行包含 (2, Mike Ross, 1985-10-01, 2018-11-23, -300000)。 ![]() 并且,由于Salary 列上的CHECK 约束仅接受正值,因此插入命令失败。 默认情况下,PostgreSQL 借助以下模式为CHECK 约束提供一个名称 让我们看一个示例,其中Salary 列上的约束具有以下约束名称 PostgreSQL CHECK 约束中的单独名称如果我们希望为 CHECK 约束分配一个单独的名称,我们可以在CONSTRAINT 表达式之后定义它,正如我们在下图中看到的那样 让我们看一个示例来了解我们如何使用 PostgreSQL 检查约束中的单独名称 为此,我们将使用 CREATE 命令创建一个新表,名为Orders,如下所示 输出 执行上述命令后,我们将收到以下窗口消息,显示 Orders 表已成功创建。 ![]() 如果我们想查看约束数据字典,我们可以按照以下步骤操作 步骤 1 打开SQL shell (psql),其中显示了必要的详细信息。 之后,我们将使用我们在 PostgreSQL 安装过程中创建的密码来登录到 Postgres 数据库服务器。 提供密码后,我们已连接到Postgres 服务器, 如图所示 ![]() 步骤 2 现在,我们将借助下面的命令连接到特定的数据库服务器jtp,我们之前创建了它 ![]() 步骤 3 之后,我们将执行以下语法以列出特定表的所有约束(主键、检查、唯一)。 最后,我们使用上述命令查看用于 Orders 表的约束 输出 在执行上述命令后,我们将获得以下结果 ![]() 注意:在上面的 Orders 表中,Article_price 列不能包含任何小于或等于零 (0) 的值。在这里,一个约束名称已被包括,因此关键字 CONSTRAINT 后面跟着命名的约束 positive_Article_price 后面跟着表达式。 使用 ALTER TABLE 命令为现有表定义 PostgreSQL CHECK 约束在 PostgreSQL 中,我们可以使用ALTER TABLE 命令添加现有表的 PostgreSQL 检查约束。 假设我们在数据库中有一个名为Amount_list的现有表。 输出 实现上述命令后,我们将收到以下消息窗口,显示 Amount_list 表已成功创建。 ![]() 要将CHECK 约束添加到 Amount_list 表中,我们可以使用 ALTER TABLE 命令,其中Amount 和 Discount 大于零,并且discount 小于 amount。 注意:我们也可以使用布尔表达式,其中包含 AND 运算符。输出 实现上述命令后,我们将收到以下消息窗口,显示 Amount_list 表已成功创建。 ![]() 并且,Valid_to列的值必须等于或大于 Valid_from 列的值, 如下面的命令所示 输出 在执行上述命令后,我们将检索以下消息窗口,显示指定的表已成功修改。 ![]() 注意
概述在PostgreSQL 检查约束部分,我们学习了以下主题
下一主题PostgreSQL 非空约束 |
我们请求您订阅我们的新闻通讯以获取最新更新。