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

  • 格式:doc
  • 大小:497.50 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

相关主题