美文网首页
数据库完整性

数据库完整性

作者: 有苦向瓜诉说 | 来源:发表于2017-12-13 22:34 被阅读9次
    • 实体完整性

      • 在CREATE TABLE时用PRIMARY KEY定义,分为列级约束条件(写在列后面)和表级约束条件(写在表的最后)。

      • 定义主码相当于UNIQUE+NOT NULL。

      • 全表扫描十分耗时,因此会自动在主码上建立一个索引。如B+树索引,提高效率。

    • 参照完整性

      • 在CREATE TABLE时用FOREIGN KEY定义那些列为外码,用REFERENCES指明这些外码参照那些表的主码。

      • 违约处理:拒绝执行(NO ACTION)为默认策略,级联操作(CASCADE),设置为空值。

      • 违约处理实例:ON DELETE CASCADE,ON UPDATE NO ACTION.

      • 对于参照完整性,除了定义外码,还应该定义外码列是否允许空值。

    • 用户自定义完整性

      • 属性上的约束条件:NOT NULL,UNIQUE,CHECK短语(检查列值满足某表达式)

      • 元组上的约束条件:使用CHECK短语,可以设置不同列之间的取值相互约束条件。

      • (check短语里的内容同where语句)

    • 完整性约束命名子句

      • 创建语法:CONSTRAINT<约束名><约束条件>,实例:CONSTRAINT name CHECK(age>30)

      • 修改完整性限制,在ALTER TABLE时修改

      • 删除:DROP CONSTRAINT name

      • 增加:ADD CONSTRAINT name CHECK(num BETWEEN 1 AND 100)

      • 更新:先删除原来的约束条件,在增加新的约束条件

    • 域的完整性约束

      • 域是具有相同数据类型的值的集合。

      • CREATE DOMAIN建立域以及约束就可以用来定义属性。实例:CREATE DOMAIN name CHAR(5) NOT NULL

      • 可以用ALTER DOMAIN修改域。

    • 断言

      • 使用断言指定一般性的约束,任何使断言不为真值的操作都会被拒绝执行。

      • 语句格式:CREATE ASSERTION <断言名><CHECK子句>

      • 删除断言:DROP ASSERTION<断言名>

    • 触发器

      • 触发器即事件-条件-动作规则。当特定事件发生,对条件进行检查,成立就执行动作。

      • 触发器只能定义在基本表上,不能定义在视图上。

      • 触发事件可以为INSERT,DELETE,UPDATE或者为其组合,以及UPDATE OF<触发列>

      • 触发器类型有行级触发器(FOR EACH ROW)和语句级触发器(FOR STATEMENT)

      • 格式

    
     CREATE TRIGGER <触发器名>
    {BEFORE|AFTER} <触发事件> ON<表名> //指明触发器激活时间,
    REFERENCING NEW|OLD ROW AS<变量>
    FOR EACH {ROW|STATEMENT}
    [WHEN<触发条件>]<触发动作体>
    

    相关文章

      网友评论

          本文标题:数据库完整性

          本文链接:https://www.haomeiwen.com/subject/rrhtwxtx.html