大数据库实验6触发器实验报告材料

  • 格式:doc
  • 大小:409.79 KB
  • 文档页数:9

下载文档原格式

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

淮海工学院计算机工程学院实验报告书

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

题目:存储过程和触发器

班级:软件132

学号: 2013122907

姓名:孙莹莹

评语:

成绩:指导教师:

批阅时间:年月日

一.目的与要求

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

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

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