SQL实验六 数据库的完整性控制

实验六  数据库的完整性控制

一、实验目的

(1)、理解SQL Server的实体完整性、参照完整性和用户自定义的完整性。

(2)、掌握SQL Server中实体完整性的建立,实践违反实体完整性的结果。

(3)、掌握使用外键以及利用foreign key.... references子句以及各种约束保证参照完整性的方法。

(4)、掌握用户自定义约束、实践用户自定义完整性。

(5)、了解触发器的作用以及一般的用法,掌握定义的触发器。

二、实验内容与步骤

(1)、创建任意名称的数据库,其中至少包括教师及研究生表,创建教师表的定义触发器trig_teachecrscore,要求记录的职称必须是教授或副教授。

 

1)创建导师情况表professor。

create table professor(

pno char(6) not null,    --导师编号

pname char(8) not null,  --姓名

psex  char(2),           --性别

page  smallint,          --年龄

scores  char(6),         --职称

phone   char(8),         --电话号码

primary key(pno));

2)创建研究生表students。

create table students(

sno char(6) not null,     --学号

sname char(8) not null,   --姓名

ssex  char(2),            --性别

enter_date  datetime,     --入学年份

scores decimal(5,2),      --总分

course  char(20),         --研究方向

pno char(3),              --导师编号

primary key(sno),

foreign key(pno) references professor(pno));

自行加入数据。

 

创建触发器如下:

create trigger trig_teacherscore on professor for insert

as

if((select scores from inserted)not in('教授','副教授'))

begin

print'插入的职称必须为教授或副教授'

rollback transaction

end

(2)、为研究生表创建更新触发器trig_stupdf,要求当更新一个记录时,新的记录的总分不低于原来的总分。

create trigger trig_stupdt on students for update

as

if((select scores from inserted)<(select scores from deleted))

begin

print'新插入的数据不得低于原数据'

rollback transaction

end

(3)、为教师表创建一个删除触发器trig_tchedl,要求当删除表中的教师编号为101时,拒绝删除。

create trigger trig_tchdel on professor for delete

as

if((select pno from deleted)='p101')

begin

print'拒绝删除编号为p101的记录'

rollback transaction

end

(4)、执行代码,验证上述触发器的约束。

delete from professor where pno='p101'     --验证删除触发器

insert into professor values('p102','罗惠萍','男',35,'教授','45678945')

insert into professor values('p103','陈玲','女',40,'研究生','45612385')   --验证插入触发器

update students set scores=350 where sno='s002'

update students set scores=200 where sno='s001'     --验证更改触发器

(5)、删除触发器trig_tchdel。

drop trigger trig_tchdel

 

发布了44 篇原创文章 · 获赞 4 · 访问量 2165

猜你喜欢

转载自blog.csdn.net/xiaob_8310/article/details/90209456