第五章 数据库完整性
数据库完整性
数据库的完整性是指数据的正确性和相容性
- 数据的正确性是指数据是符合现实世界语义,反映当前实际状况的
- 数据的相容性是指数据库的同一对象在不同的关系中的数据是符合逻辑的
关系模型中有三类完整性约束:实体完整性,参照完整性和用户定义完整性。
约束规则
DDL
约束对象:
- 域完整性;某一列
- 关系完整性:整个表/多列
约束来源:
- 结构约束:唯一,依赖等
- 内容约束:范围等···
约束状态
- 静态约束:任何时候都大于某个值等···
- 列完整性
- 表完整性
- 动态约束 :只能增加等···
- 触发器
静态约束
check()括号内可以是任何where 的语句(包含子查询)
修改约束
断言
使用较少
动态约束
触发器Trigger
Trigger是一种过程完整性约束(相比 下,Create Table中定义的都是非过程性约束), 是一段程序,该程序可以在特定的时刻被自动触发执行,比如在一次更新操 作之前执行,或在更新操作之后执行。
-- sql server 不支持下面写法
create trigger stu_chgage before update of Sage
on Student
referencing new x, old y
for each row when (x.Sage < y.Sage)
begin
raise_application_error(-20003, 'invalid salary on update');
//此条语句为Oracle的错误处理函数
end;
sql server 的触发器语法不一样
CREATE TRIGGER (Transact-SQL) - SQL Server | Microsoft Docs