《2021數(shù)據(jù)庫存儲器與觸發(fā)器實驗報告》由會員分享,可在線閱讀,更多相關《2021數(shù)據(jù)庫存儲器與觸發(fā)器實驗報告(5頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、數(shù)據(jù)庫存儲器與觸發(fā)器實驗報告
南昌航空大學實驗報告
二0一七年 5 月 3 日
課程名稱:數(shù)據(jù)庫概論實驗名稱:存儲器與觸發(fā)器
班級:xxx 姓名:xxx 同組人:
指導教師評定:簽名:
一、實驗環(huán)境
1.Windows2000或以上版本;
2.SQLServer2000或2005。
二、實驗目的
1.掌握存儲過程的創(chuàng)建,修改,使用,刪除;
2.掌握觸發(fā)器的創(chuàng)建,修改,使用,刪除。
三、實驗步驟及參考源代碼
1.創(chuàng)建過程代碼:
CREATE PROCEDURE C_P_Proc(@ccna varchar(10),@cno char(4)OUTPUT,@cna var
2、char(10)OUTPUT,@pna varchar(20)OUTPUT,@num int OUTPUT)
AS
SELECT @cna=cna,@cno=
FROM cp,customer,paper
WHERE AND paper.pno=cp.pno AND cna=@ccna;
6.執(zhí)行存儲過程C_P_Pro,實現(xiàn)對李濤,錢金浩等不同顧客的訂閱信息查詢execute C_P_Proc@name=李濤
execute C_P_Proc@name=錢金浩
7,刪除存儲過程C_P_Prcc
DROP PROCEDURE C_P_PROC
(4)在DingBao數(shù)據(jù)庫中針
3、對PAPER創(chuàng)建插入觸發(fā)器TR_PA PER_I、刪除觸發(fā)器TR_PAPER_D、修改觸發(fā)器TR_PAPER_U。具體要求如下。
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 @ipprbegin
raiserror(報紙的單價為空或小于零!,16,1)
update paper set ppr=10
where paper.pno=@ipno
4、
end
end
INSERT
INTO paper(pno,pna,ppr)VALUES(000007,青年報,-2)
select*from paper
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
fro
5、m deleted
delete from cp
where pno=@ipno
end
delete from paper
where pno =000007
select*from paper
create trigger TR_Paper_U on paper
for update as
declare @ippr float;
select @ippr=ppr from inserted
if @ipprbegin
raiserror(輸入單價不正確!,16,1)
rollback transaction
end
update paper
set ppr=-1
where pno=000004
創(chuàng)建DDL觸發(fā)器,阻止對DingBao數(shù)據(jù)庫的修改
CREATE TRIGGER safety ON DATABASE FOR ALTER_TABLE,DROP_TABLE AS
PRINT你必須失效DDL觸發(fā)器"safety"后,才能刪除或修改數(shù)據(jù)庫表~ ROLLBACK;
執(zhí)行:
DROP TABLE cp
四,實驗體會
通過這次的存儲器和觸發(fā)器的實驗,讓我學會了存儲器和觸發(fā)器的創(chuàng)建,修改,使用和刪除操作,也了解存儲器和觸發(fā)器在數(shù)據(jù)庫中的作用。