数据库存储器与触发器实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南昌航空大学实验报告
二0 一七年5月 3 日
课程名称:数据库概论实验名称:存储器与触发器
班级:
XX
姓名:XXX 同组人:
X
指导教师评定:签名:
一、实验环境
1. Windows2000或以上版本;
2. SQLServer2000 或2005。
二、实验目的
1. 掌握存储过程的创建,修改,使用,删除;
2. 掌握触发器的创建,修改,使用,删除。
三、实验步骤及参考源代码
1.创建过程代码:
CREATEPROCEDURE_P_Proc( @ccna varchar (10), @cnochar(4) OUTPUT@cnavarchar (10) OUTPUT@Pna varchar (20) OUTPUTSnumint OUTPUT
AS
SELECT@cna=cna, @cn(=cp. eno, @pnapna, @numnum
FROMtp , customer, paper
WHEREustomer . eno=cp. eno ANRaper . pno=cp. pno ANDcna =@ccna
6.执行存储过程C_P_Pro,实现对李涛,钱金浩等不同顾客的订阅信息
查询
execute C_P_Proc @nam=e' 李涛' execute C_P_Proc @nam=e' 钱金浩' 7,删除存储过程C_P_Prcc DROPPROCEDURCE_P_PROC
(4)在DingBao数据库中针对PAPEF创建插入触发器TR_PAPER_I删除触发器TR_PAPER_D修改触发器TR_PAPER。具体要求如下。
<1>对PAPER勺插入触发器:插入报纸记录,单价为负值或为空时,设定为10 元。
CREATE TRIGGER TR_PAPER_I ON paper
FOR INSERT AS
DECLARE @ippr FLOAT;
declare @ipno int;
SELECT @ippr=ppr,@ipno=pno from inserted
begin
if @ippr<0 or @ippr is NULL
begin
raiserror(' 报纸的单价为空或小于零!',16,1)
update paper set ppr=10
where paper.pno=@ipno
end
end
INSERT
INTOpaper (pno, pna, ppr) VALUE(S'000007' , ' 青年报' ,- 2) select * from paper
<2>对PAPER勺删除触发器:要删除的记录,若正在被订阅表CP参照时, 级联删除订阅表中相关的订阅记录。
create trigger TR_Paper_D on paper
instead of delete as
declare @icount int;
select @icount=count(*)from deleted,Cp where
deleted.pno=Cp.pno
if @icount>=1
begin
declare @ipno int
select @ipno=deleted.pno
from deleted
delete from cp
where pno=@ipno
end
delete from paper
where pno = '000007'
select * from paper
<3>对PAPER勺修改触发器:当报纸的单价修改为负值或为空时,提示“输
入单价不正确!”的信息,并取消修改操作。
create trigger TR_Paper_U on paper
for update as
declare @ippr float;
select @ippr=ppr from inserted
if @ippr<0 or @ippr is null begin
raiserror(' 输入单价不正确!',16,1)
rollback transaction
end
update paper
set ppr =-1
where pno ='000004'
创建DDL触发器,阻止对DingBao数据库的修改CREATETRIGGERsafety ONDATABASEFORALTER_TABLE, DROP_TABLEAS PRINT'你必须失效DD触发器"safety"后,才能删除或修改数据库表〜’
ROLLBAC;K 执行:
DROPTABLEcp
四,实验体会
通过这次的存储器和触发器的实验,让我学会了存储器和触发器的创建,修改,使用和删除操作,也了解存储器和触发器在数据库中的作用