好文档 - 专业文书写作范文服务资料分享网站

数据库实验6触发器实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

淮海工学院计算机工程学院

实验报告书

课程名: 《数据库原理及应用》

题 目: 存储过程和触发器

班 级: 软件132 学 号: 2013122907 姓 名: 孙莹莹

评语: 成绩: 指导教师: 批阅时间: 年 月 日 《 数据库原理及应用 》实验报告 - 1 –

一. 目的与要求

1.

2. 3. 4.

掌握存储过程的创建方法;

掌握存储过程的执行、修改和删除等操作; 掌握触发器的创建方法;

掌握触发器的使用、修改和删除等相关内容

二. 实验内容

基于前面建立的factory数据库,使用T-SQL语句完成如下各小题的功能:

1. 创建一个为worker表添加职工记录的存储过程Addworker; 2. 创建一个存储过程Delworker删除worker表中指定职工号的记录。 3. 显示存储过程Delworker; 4. 删除存储过程Addworker和Delworker.

三. 实验步骤

1 .

(1)建立存储过程 USE factory GO

CREATE PROCEDURE Addworker @no int=NULL,

@name char(10)=NULL, @sex char(2)=NULL,

@birthday datetime=NULL, @na char(2)=NULL, @wtime datetime=NULL, @depno int=NULL AS

IF @no IS NULL OR @name IS NULL OR @sex IS NULL OR @birthday IS NULL OR @depno IS NULL BEGIN

PRINT '请重新输入该职工信息!'

PRINT '你必须提供职工号、姓名、性别、出生日期、部门号' RETURN END

BEGIN TRANSACTION INSERT INTO worker

VALUES(@no,@name,@sex,@birthday,@na,@wtime,@depno) IF @@error<>0 BEGIN

ROLLBACK TRAN RETURN END

《 数据库原理及应用 》实验报告 - 2 –

COMMIT TRANSACTION

PRINT '职工'+@name+'的信息成功添加到表worker中' (2)验证存储过程 USE factory GO

Addworker 20,'陈立','女','55/03/08','否','75/10/10',4 GO

SELECT 职工号,姓名,性别,党员否 FROM worker GO 2.

(1)建立存储程序 USE factory GO

CREATE PROCEDURE Delworker @no int=NULL AS

IF @no IS NULL BEGIN

PRINT '必须输入职工号!' RETURN END

BEGIN TRANSACTION

DELETE FROM worker WHERE 职工号=@no IF @@error<>0 BEGIN

ROLLBACK TRAN RETURN END

COMMIT TRANSACTION

PRINT '成功删除职工号为'+CAST(@no AS CHAR(2))+'的职工记录' 执行下列语句,可验证存储过程的正确性: USE factory GO

Delworker 20 GO

SELECT 职工号,姓名,性别,党员否 FROM worker GO 3.

USE factory GO

EXEC sp_helptext Delworker GO 4.

USE factory GO

IF EXISTS (SELECT name FROM sysobjects

《 数据库原理及应用 》实验报告 - 3 –

WHERE name = 'Addworker' AND type ='P') DROP PROCEDURE Addworker GO

IF EXISTS (SELECT name FROM sysobjects

WHERE name = 'Delworker' AND type ='P') DROP PROCEDURE Delworker GO

5.建立触发器depart_update的程序如下: USE factory GO

IF EXISTS (SELECT name FROM sysobjects

WHERE type='TR' AND name='depart_update') DROP TRIGGER depart_update GO

CREATE TRIGGER depart_update ON depart AFTER UPDATE AS

DECLARE @olddepno int,@newdepno int SELECT @olddepno=部门号FROM deleted SELECT @newdepno=部门号FROM inserted UPDATE worker

SET 部门号=@newdepno WHERE 部门号=@olddepno GO

执行下列语句,可验证存储过程的正确性: USE factory GO

PRINT '将部门号改为' UPDATE depart SET 部门号=105 WHERE 部门号=101 GO

SELECT 职工号,姓名,部门号FROM worker GO

PRINT '将部门号改为' UPDATE depart SET 部门号=101 WHERE 部门号=105 GO

SELECT 职工号,姓名,部门号FROM worker GO

6.建立触发器worker_delete的程序如下:

USE factory GO

IF EXISTS (SELECT name FROM sysobjects

《 数据库原理及应用 》实验报告 - 4 –

WHERE type='TR' AND name='worker_delete') DROP TRIGGER worker_delete GO

CREATE TRIGGER worker_delete ON worker FOR DELETE AS

DECLARE @no int

SELECT @no=职工号FROM deleted DELETE FROM salary WHERE 职工号=@no GO

执行下列语句,可验证存储过程的正确性:

USE factory GO

PRINT '删除前的工资记录' SELECT * FROM salary GO

DELETE FROM worker WHERE 职工号=15 GO

PRINT '删除职工号为的职工记录后的工资记录' SELECT * FROM salary GO

7.删除触发器depart_update的程序如下:

USE factory GO

DROP TRIGGER depart_update GO

8.删除触发器worker_delete的程序如下:

USE factory GO

DROP TRIGGER worker_delete GO

四. 测试数据与实验结果

第1题图

第2题图

数据库实验6触发器实验报告

淮海工学院计算机工程学院实验报告书课程名:《数据库原理及应用》题目:存储过程和触发器班级:软件132学
推荐度:
点击下载文档文档为doc格式
6dzwu6ntu91is530735r
领取福利

微信扫码领取福利

微信扫码分享