数据库实验6触发器实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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