天津网站推广¥做下拉去118cr,爱采购下载app,专业seo排名优化费用,网站设计建设流程数据完整性对于任何数据库系统来说都是很重要的一方面#xff0c;它确保存储的数据保持准确、一致且有意义的。在 PostgreSQL 中#xff0c;维护数据完整性的一个强大工具是使用检查约束。这些约束允许你定义数据必须遵守的规则#xff0c;以防止无效数据的插入或修改。本文…数据完整性对于任何数据库系统来说都是很重要的一方面它确保存储的数据保持准确、一致且有意义的。在 PostgreSQL 中维护数据完整性的一个强大工具是使用检查约束。这些约束允许你定义数据必须遵守的规则以防止无效数据的插入或修改。本文我们将探讨如何在 PostgreSQL 中使用检查约束去验证数据并使用免费的 DVD Rental Database 作为演示案例。
了解检查约束
检查约束是限制可以输入到表中的一个列或一组列中的值的规则。这些规则由数据库系统强制执行防止插入或修改违反指定条件的行。检查约束是使用 CHECK 关键字定义的后面跟着一个计算结果为布尔值的表达式。
验证租赁期限
假设有一个场景这个场景使用“dvdrental”数据库中“rental”表的修改版该表包含一个“rental_duration”列。在 Navicat 表设计器中这个表的定义可能如下所示 现在假设我们希望确保每次租赁的时长始终大于零天。我们可以通过在“rentals_with_rental_period”表中添加检查约束来实现这一目标具体做法如下
ALTER TABLE rentals_with_rental_period
ADD CONSTRAINT rental_duration_check
CHECK (rental_duration 0);
In Navicat we can add a check constraint in the Checks tab of the Table Designer. We just need to supply an expression and optional name. Navicat will create a unique name for us if we dont supply one! 在 Navicat 中我们可以在表设计器的“检查”选项卡中添加检查约束。我们只需要提供一个表达式和可选的名称。如果我们不提供名称Navicat 会为我们创建一个唯一的名称
通过执行此约束任何尝试在“rentals_with_rental_period”表中插入或更新一行且租赁时长小于或等于零的操作都将导致错误从而确保只允许有效的租赁时长。
确保有效评级
“dvdrental”数据库中“film”表的另一个例子涉及验证电影评级。假设我们想要将评级限制为某些特定值如“G”、“PG”、“PG-13”、“R”或“NC-17”。我们可以通过检查约束来实现这一点
ALTER TABLE film
ADD CONSTRAINT film_rating_check
CHECK (rating IN (G, PG, PG-13, R, NC-17));
在 Navicat 表设计器中这是相同的约束 现在任何尝试在“film”表中插入或更新评级但其值不是指定值之一的行的操作都将被拒绝从而确保只允许有效的评级。
处理空值NULL
需要注意的是除非约束中特别包含检查 NULL 的条件否则检查约束不会应用于包含 NULL 值的一行或多行。例如为了强制“film”表中的“rental_rate”列始终大于零且不为 NULL 我们将使用以下约束
ALTER TABLE film
ADD CONSTRAINT film_rental_rate_check
CHECK (rental_rate 0 AND rental_rate IS NOT NULL);
在 Navicat 表设计器中相同的约束如下 结语
检查约束是一个确保 PostgreSQL 数据完整性的强大工具。通过定义数据必须遵守的规则可以防止插入或修改无效数据从而帮助维护数据库的准确性和一致性。将检查约束纳入数据库设计可以构建稳定且可靠的数据系统满足组织的需求。 PostgreSQL 相关技术内容
PostgreSQL 与 Navicat数据库行业的中坚力量
在 PostgreSQL 中存储三元数据
PostgreSQL 的实体化视图介绍
PostgreSQL 实体化视图的使用
为什么在下一个 IT 项目中选择使用 PostgreSQL
PostgreSQL 中的多版本并发控制
使用 Navicat Monitor 3.0 监控 PostgreSQL
Navicat Monitor 3 中查看 PostgreSQL 实例详细信息
使用 Navicat Monitor 3 跟踪 PostgreSQL 实例查询
在 PostgreSQL 中设置查询超时
更多技术干货欢迎点击 这里 关注 Navicat 技术智库。