zoukankan      html  css  js  c++  java
  • 浅谈数据库的完整性

    数据库操作的时候必须要实现数据库的完整性,在实现数据库的完整性的时候,有两种方式都可以实现数据库的完整性,第一种是通过完整性的约束实现数据库的完整性,第二种就是通过用户创建自定义的触发器实现数据库的完整性。

    一、完整性约束实现数据库的完整性

    (一)主键约束

    谈到主键约束的话,我就通过几个例子来实现创建主键约束

    (1) 对student表添加主键约束

    alter table student 
    add constraint PK1 primary key(sno)

     (2) 对sc表添加主键约束

    alter table sc
    add constraint PK3 primary key(sno,cno)

    (二)外键约束

    创建sc表的外键约束

    alter table sc
    add constraint PK4 foreign key(sno) references student(sno);
    alter table sc
    add constraint PK5 foreign key(cno) references course(cno);

     (三)check约束

    修改student表,使用Check约束,使Sex列只能接受“男”或“女”,以强制执行域数据完整性。

    alter table student
    add constraint c1 check(ssex in('',''))

    (四)删除约束

    删除SC表中的C3,C4外键约束。

    alter table sc 
    drop constraint pk4
    alter table sc 
    drop constraint pk5

    二、创建自定义触发器实现数据库完整性

    (一)创建一个修改用户记录的触发器

    创建触发器trigger_t1,实现当修改学生表(student)中的学生姓名时,显示提示信息“学生姓名被修改了!!!”。

    create trigger trigger_t1 
    on student 
    for update 
    as 
    if update(sname)
    begin
    print '触发器执行'
    end

     验证触发器:UPDATE STUDENT SET SNAME='55555' WHERE  SNO='95001'

    (二)创建一个删除用户记录的触发器

    在学生成绩库中创建触发器trigger_t2,实现如下功能:当在学生表(student)中删除一条学生信息后,自动实现删除该学生在学生选课表(sc)中的选课信息。

    create trigger trigger_t2
    on student for delete
    as 
    declare @sno_del varchar(10) 
    select @sno_del=sno from deleted
    delete from sc where sno = @sno_del

     验证触发器:delete from student where sno='95001'

    (三)创建一个级联修改用户信息的触发器

    创建触发器trigger_t3,实现当修改学生表(student)中的某个学生的学号时,对应学生成绩表(sc)中的学号也作修改。

    create trigger trigger_t3
    on student for update 
    as
    if update(sno)
    begin
    declare @sno_new varchar(10),@sno_old varchar(10)
    select @sno_old=sno from deleted
    select @sno_new=sno from inserted
    update sc set sno=@sno_new where sno = @sno_old
    end

     验证触发器:update student set sno='123456' where sno= '95002 '

     

  • 相关阅读:
    vagrant up报错 Warning: Authentication failure. Retrying...解决方案
    node读写Excel操作
    批量转换word为pdf
    分享7个shell脚本实例--shell脚本练习必备
    shell脚本实例,通向shell脚本大师的必经之路
    前端优化DNS预解析
    如何选择开源协议
    深入理解document.referrer的用法
    使用 WebRTC 构建简单的前端视频通讯
    深入理解WebRTC
  • 原文地址:https://www.cnblogs.com/zhjsll/p/4124789.html
Copyright © 2011-2022 走看看