数据库存储器与触发器实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南昌航空大学实验报

二0 一七年5月3日

课程名称:数据库概论实验名称:存储器与触发器

班级:

XX

X 姓名:XXX 同组人:

指导教师评定:________________________________________ 签名:__________________

一、实验环境

1. Windows2000或以上版本;

2. SQLServer2000 或2005。

二、实验目的

1. 掌握存储过程的创建,修改,使用,删除;

2. 掌握触发器的创建,修改,使用,删除。

三、实验步骤及参考源代码

1.创建过程代码:

CREATEPROCEDURI_P_Proc( @ccna varchar (10), @cnochar (4) OUTPU,T@cna varchar (10) OUTPU,T@pnavarchar (20) OUTPU,T@numint OUTPUT

AS

SELECT@cna=cna, @cno=cp. cno, @pna=pna, @num=num

FROMcp , customer , paper

WHEREcustomer . cno=cp. cno ANDpaper . 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数据库中针对PAPER创建插入触发器TR_PAPER_I删除触发器TR_PAPER_D修改触发器TR_PAPER_J具体要求如下。

<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

INTO paper ( pno, pna, ppr ) VALUES( '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'你必须失效DDL触发器"safety"后,才能删除或修改数据库表〜' ROLLBAC;K

执行:

DROPTABLEcp

四,实验体会

通过这次的存储器和触发器的实验,让我学会了存储器和触发器的创建,修改,使用和删除操作,也了解存储器和触发器在数据库中的作用。

相关文档
最新文档