SQL数据完整性:约束、触发器与业务规则管理
1. 高级约束功能
SQL2 及以后的 SQL 标准引入了更通用的数据完整性约束规范和执行能力,主要包括以下四种约束类型:
- 列约束 :在创建表时作为列定义的一部分指定,或在修改表时添加。它从概念上限制列中可能出现的合法值,在 CREATE TABLE 和 ALTER TABLE 语句的列定义中体现。
- 域 :列约束的一种特殊形式,提供了在数据库中定义新数据类型的有限能力。域实际上是预定义的数据库数据类型加上一些额外约束,通过 CREATE DOMAIN 语句在表和列定义之外定义。不过,目前很少有 SQL 实现支持该语句。
- 表约束 :在创建表时作为表定义的一部分指定,从概念上限制表行中可能出现的合法值,在 CREATE TABLE 语句中指定,通常在列定义之后成组出现,但 SQL 标准允许其与列定义穿插。
- 断言 :最通用的 SQL 约束类型,与域一样,在数据库的表和列结构之外指定。断言从概念上规定了数据库中跨多个表的数据值之间的关系,但同样,目前很少有 SQL 实现支持断言。
这四种约束类型各有其概念目的,且出现在 SQL 语句语法的不同部分,但它们之间的区别有些随意。在实际应用中,应根据数据库所模拟的现实情况,将每个数据库约束指定在最自然合适的位置。例如,适用于全局情况的约束应作为断言,适用于特定实体类型的约束应作为表约束或列约束,而
超级会员免费看
订阅专栏 解锁全文
1885

被折叠的 条评论
为什么被折叠?



