§ 7. 数据完整性和事务处理 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

. 数据完整性的含义

1. 数据完整性 : 是指数据的一致性 (Accuracy) 和可靠性 (Reliability). 它是为防止数据库中存在不符合语义规定的数据 , 防止因错误信息的输入 , 输出而造成无效的操作或错误信息 . 它包括实体完整性 (Entity Integrity), 域完整性 (Domain Integrity), 参照完整性 (Referential Integrity), 用户定义完整性 (User-defined Integrity).

2. 实体完整性 : 表的每一行在表中是唯一的实体 .

3. 域完整性 : 也称列完整性 , 要求域中指定的列 ( 字段 ) 的数据具有正确的数据类型 , 格式和有效的数值范围 .

4. 参照完整性 : 指两个表中的主码和外码的数据应对应一致 .

5. 用户自定义完整性 : 允许用户定义不属于其它任何一完整性规则 ( 例如 : 性别只能是男或女 ).

 

. 规则 .

1. 规则 : 就是数据库中 , 对存储在数据库中表的列 ( 字段 ) 或用户自定义数据类型中的值的规定和限制 . 规则要在 insert update 语句之前给出 .

2. 创建规则 :( 右健单击规则 --[ 新建规则 ])

create rule 规则名

       as @ 变量名 条件                -- 条件可以是 where 子句中任何有效的表达式

eg:

create rule Age_rule

       as @old_scope between 17 and 28

create rule sex_rule

       as @xb_scope in ( ' ' , ' ' )

3. 绑定规则

sp_bindrule 规则名 , ' . 字段名 '

eg:

sp_bindrule enter_date_rule, ' 学生表 . 入学年份 '

4. 解除绑定

sp_unbindrule ' . 字段名 '

5. 删除规则

drop rule 规则名

6. 注意事项 :

       1) 规则只能处理常量 ,SQL Server 函数 , 不能用来查找表 , 不能比较表中的列 .

       2) 表中的每列只能与一种规则绑定 , 若多次绑定 , 则后者覆盖前者 .

       3) 若要删除规定 , 先要解除规则的绑定关系 .

       4) 在系统中大量拷贝数据时 , 规则不起作用 .

       5) 在使用规则时 , 要确保规则中的值与其绑定列的数据类型相一致 .

 

. 默认

1. 默认 : 是一种数据库对象 , 它与默认值约束的功能一样 .

2. 创建默认 :( 右健单击默认 --[ 新建默认 ])

create default 默认名 as 常量

eg:

create default age_limited as 18

3. 绑定默认和解除绑定默认 ( 同规则 )

eg:

sp_bindefault age_limited, ' 学生表 . 年龄 '

sp_unblindefault ' 学生表 . 年龄 '

4. 删除默认

drop default 默认名称