北 华 航 天 工 业 学 院
《数据库原理与应用》
实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
报告题目: 数据库完整性管理
作者所在系部: 计算机科学与
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
系
作者所在专业: 网络工程
作 者 学 号 : 20114052233
作 者 姓 名 : 张旭刚
指导教师姓名: 李建义
完 成 时 间 : 2013 5.7
数据库完整性管理
一、 实验目的
1、 理解数据库完整性约束机制;
2、 掌握创建、修改和删除完整性约束的方法;
3、 掌握创建和删除触发器的方法。
二、 实验内容
(一)附加上次实验所创建的数据库“db_Library”,并回顾该数据库的数据
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
信息。
(二)约束的创建和管理
1、使用SQL语句创建图书表(tb_booknew),要求为各字段选择合适的数据类型及名称,其中“图书编号”字段为主码;“类别编号”字段为外码,删除图书类别信息表中记录时级联删除图书信息表中对应的记录;书名不允许空值;库存数限制的25到100之间。
2、使用SQL语句创建借阅表(tb_borrownew),要求为各字段选择合适的数据类型及名称,其中“图书编号”和“读者编号”的组合值为主码。
3、使用SQL语句为图书表(tb_booknew)中书名字段增加唯一性约束。
4、使用SQL语句将第1题的库存数限制修改为30到80之间。
5、使用SQL语句删除第3题增加的约束。
(三)触发器的创建和管理
1、使用SQL语句创建一个名为“借阅信息插入修改_TRIG”的触发器,要求在“借阅信息表”中插入或修改记录时触发该触发器,检查“归还日期”字段修改是否超过3个月,如果超过给出相应提示,不超过给出相应提示(“插入记录成功”或“修改记录成功”)。对“借阅信息表”进行插入或修改操作,验证触发器的执行情况。
2、使用SQL语句创建一个插入、更新类型的触发器“图书信息_TRIG”,当“图书信息表”中插入或修改记录时,触发该触发器,检查库存册数是否大于0,若不大于0,则撤销插入和修改操作。在“借阅信息表”中插入或修改一条记录,给定的库存册数值为-1,验证触发器的执行情况
3、使用SQL语言删除“借阅信息插入修改_TRIG”触发器。
三、 实验步骤
1、使用SQL语句创建图书表(tb_booknew),要求为各字段选择合适的数据类型及名称,其中“图书编号”字段为主码;“类别编号”字段为外码,删除图书类别信息表中记录时级联删除图书信息表中对应的记录;书名不允许空值;库存数限制的25到100之间。
create table tb_booknew
( Bnum char(10) primary key,
Tynum CHAR(4)FOREIGN key REFERENCES tb_booktype(Tynum) ON DELETE CASCADE,
Bname char(20) not null,
Knum smallint check(Knum>=25 and Knum<=100)
);
2、使用SQL语句创建借阅表(tb_borrownew),要求为各字段选择合适的数据类型及名称,其中“图书编号”和“读者编号”的组合值为主码。
create table tb_borrownew
( Bnum char(10),
Rnum char(10),
Bodata DateTime not null,
redata Datetime not null,
primary key(Bnum,Rnum),
foreign key (Bnum) references tb_book(Bnum),
foreign key (Rnum) references tb_reader(Rnum)
);
3、使用SQL语句为图书表(tb_booknew)中书名字段增加唯一性约束。
ALTER TABLE TB_BOOKNEW
ADD CONSTRAINT C3 UNIQUE(Bname)
4、使用SQL语句将第1题的库存数限制修改为30到80之间。
ALTER TABLE tb_booknew
ADD CHECK(Knum BETWEEN 30 AND 80)
5、使用SQL语句删除第3题增加的约束。
ALTER TABLE TB_BOOKNEW
DROP CONSTRAINT C3
(三)触发器的创建和管理
1、使用SQL语句创建一个名为“借阅信息插入修改_TRIG”的触发器,要求在“借阅信息表”中插入或修改记录时触发该触发器,检查“归还日期”字段修改是否超过3个月,如果超过给出相应提示,不超过给出相应提示(“插入记录成功”或“修改记录成功”)。对“借阅信息表”进行插入或修改操作,验证触发器的执行情况。
create trigger 借阅信息插入修改_TRIG1
on dbo.tb_borrow
for insert , update
as
declare
@借阅日期 date,
@归还日期 date
begin
select @借阅日期 ,@归还日期 from inserted
if(DATEDIFF(M,@借阅日期,@归还日期)>3)
begin
print('数据插入失败!);
end
else
if (exists(select * from inserted )and not exists (select *from deleted))
begin
print('数据插入成功!');
end
if exists (select *from inserted)and exists (select *from deleted)
begin
print(修改成功! ! !');
end
End
insert into tb_borrow
values('10011','R10008',2008-09-20 ,2009-10-20)
insert into tb_borrow
values('10006','R10008',2008-05-20 ,2008-6-20)
update tb_borrow
set Redata='2010-05-20'
where Bnum =10003 and Rnum='R10003'and Bodata ='2009-09-20'
2、使用SQL语句创建一个插入、更新类型的触发器“图书信息_TRIG”,当“图书信息表”中插入或修改记录时,触发该触发器,检查库存册数是否大于0,若不大于0,则撤销插入和修改操作。在“借阅信息表”中插入或修改一条记录,给定的库存册数值为-1,验证触发器的执行情况
CREATE TRIGGER 图书信息_TRIG1 on TB_BOOKNEW
For insert,update
As
Declare @num int
begin
Select @num =Knum from inserted
If @num <=0
print('库存数小于等于0,插入更新操作已停止!!!!')
Rollback transaction
Else print('数据插入成功!')
End;
insert into tb_book(Bnum,Tynum,Bname,writer,publish,price,Knum)
values('10018','5','CAD','兰吉昌','华航出版社',56,-7)
insert into tb_book(Bnum,Tynum,Bname,writer,publish,price,Knum)
values('10020','5','CAD','兰吉昌','华航出版社',56,8)
4.实验
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
本次实验总体上感觉不是很好做,关键对触发器原理理解的不是很深刻,在做实验的过程中遇到了好多问题。第一个是每次当插入的时间大于三个月时本来是差不进去的,但是在表中仍然能找到;第二个是修改数据时,本来显示的是修改成功,但是它却显示的是空值。最后看了点参考书有了一点思路,但还是没成功。后来,在上课时,看了老师的代码后才有了点了解。
最后,虽然作业完成了,但是还有很多关于触发器的知识不懂,自己还得以后多看书啊!