现在图书管理数据库的有以下三个关系模式:

图书(总编号,分类号,书名,作者,出版单位,单价)
读者 (借书证号,单位,姓名,性别,职称,地址)
借阅 (借书证号,总编号,借书日期)
.利用SQL语句完成以下题目
 向借阅表中插入一条记录时,通过触发器检查该记录的图书编号和借书证号是否存在,存在则允许插入,否则取消操作。
 修改读者表中读者借书证号时,同时修改借阅表中的借书证号。
 删除读者信息时,检查借阅表中是否有该读者的借阅信息,有则不许删除。
1) 创建添加读者记录的存储过程。
2) 创建修改图书信息的存储过程。
3) 创建删除某个指定读者信息的存储过程。
4) 创建一存储过程,反应指定读者借阅图书的情况。

/*向借阅表中插入一条记录时,通过触发器检查该记录的图书编号和借书证号是否存在,存在则允许插入,否则取消操作。*/
create trigger insert_jy
on 借阅
after insert
as
if (select count(*) from 图书,读者,inserted where 图书.总编号=inserted.总编号 and 读者.借书证号=inserted.借书证号)=0
begin
print ' 信息不正确!'
rollback transaction
end

/*修改读者表中读者借书证号时,同时修改借阅表中的借书证号。*/
create trigger update_dz
on 读者
after UPDATE
as
if UPDATE(借书证号)
BEGIN
UPDATE 借阅 SET 借书证号=(select 借书证号 from Inserted) where 借书证号=(select 借书证号 from deleted)
END

/*删除读者信息时,检查借阅表中是否有该读者的借阅信息,有则不许删除。*/
create trigger delete_dz
on 读者
after delete
as
if (select count(*) from 借阅,inserted where 借阅.借书证号=inserted.借书证号)=0
begin
print ' 此信息不能删除!'
rollback transaction
end

/*创建一存储过程,反应指定读者借阅图书的情况。*/
create procedure select_id(@id int)
as
select * from 借阅 where 借书证号=@id

/*创建添加读者记录的存储过程。借书证号,单位,姓名,性别,职称,地址*/
create procedure insert_id(@借书证号 int,@单位 varchar(50),@姓名 varchar(6),@性别 varchar(4),@职称 varchar(10),@地址 varchar(50))
as
insert 读者 values (@借书证号,@单位,@姓名,@性别,@职称,@地址)

/*创建修改图书信息的存储过程。总编号,分类号,书名,作者,出版单位,单价*/
create procedure update_id(@总编号 int,@分类号 int,@书名 varchar(50),@作者 varchar(10),@出版单位 varchar(20),@单价 int)
as
update 图书 set 分类号=@分类号,书名=@书名,作者=@作者,出版单位=@出版单位,单价=@单价 where 总编号=@id

/*创建删除某个指定读者信息的存储过程。*/
create procedure delete_id(@id int)
as
delete 读者 where 借书证号=@id
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-23
刘老师知道
相似回答