SQL 断言
本文最后更新于:2024年3月18日 凌晨
SQL 断言
- 在SQL中可以使用数据定义语言中的CREATE ASSERTION语句,通过声明性断言(declarative assertions)来指定更具一般性的约束,可以定义设计多个表或聚集操作的比较复杂的完整性约束,断言创建以后,任何对断言中所涉及关系的操作都会触发关系数据库管理系统对断言的检查,任何使断言不为真值的操作都会被拒绝执行。
创建断言的语句格式
1 |
|
- 每一个断言都被赋予一个名字,<CHECK子句>中的约束条件于WHERE子句的条件表达式类似。
[例5.18]:限制数据库课程最多60名学生选修。
1 |
|
- 每当学生选修课程时,将在SC表中插入一条元组(Sno,Cno,NULL),ASSE_SC_DB_NUM断言被触发检查,如果选修数据库课程的人数已经超过60人,CHECK子句返回值为"假",对SC表的插入操作被拒绝。
[例5.19]:限制每一门课程最多60名学生选修。
1 |
|
[例5.20]:限制每个学期每一门课程最多60名学生选修。
首先修改SC表达模式,添加一个"学期(TERM)"的属性。
1 |
|
然后定义断言:
1 |
|
删除断言的语句格式
1 |
|
如果断言很复杂,则系统在检测和维护断言上的开销较高,这是在使用断言时应该注意的。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!