使用触发器实现数据完整性实验.docx
实验六 使用触发器实现数据完整性实验报告
学号: 1181301123 姓名: 曹文浩 班级: 计算机1181 指导老师: 冯万利,唐洁方 实验时间: 5.15 实验地点: 家
一、实验目的和要求
要求学生理解触发器实现数据完整性的重要性,掌握用触发器创建与应用的方法;掌握用触发器实现数据参照完整性的方法;理解触发器与约束的不同。
二、实验内容
(1)为表建立触发器,激活触发器进行验证。
(2)为表建立级联更新的触发器,实现参照完整性,并激活触发器进行验证。
(3)比较约束与触发器的执行顺序。
三、实验步骤
实验8.1
创建 JXGL数据库表S的插人触发器tri_INSERT_S,插人记录的年龄仅在15~30。
(1)打开SQL Server Management Studio窗口。
(2)单击“标准”工具栏上的“新建查询"按钮,打开“查询编辑器”窗口。
(3)在窗口内直接输入以下CREATE TRIGGER语句创建触发器。
(4)为JXGL数据库表S创建一个INSERT触发器,当插入的新行中年龄的值不在15~ 30时就激活该触发器,撤销该插入操作。
USE JXGL
GO
CREATE TRIGGER tri_INSERT_S ON S
FOR INSERT
AS
DECLARE @S_age tinyint
SELECT @S_age= S.age
FROM S
IF @S_age NOT BETWEEN 15 AND 30
ROLLBACK TRANSACTION
GO
(5)单击“SQL编辑器"工具栏上的“分析”按钮,检查输人的T-SQL语句是否有语法错误,如果有语法错误则进行修改,直到没有语法错误为止。
(6)确保无语法错误后单击“SQL编辑器"工具栏上的“执行”按钮,完成触发器的创建。
USE JXGL
GO
-- DELETE删除类型触发器
CREATE TRIGGER tgr_s_delete
ON S
FOR DELETE --删除触发
AS
PRINT '备份数据中···'
IF(object_id('S_Backup','U') IS NOT NULL)
--存在S_Backup, 直接插人数据
INSERT INTO S_Backup SELECT sno,sname,age,sex,sdept FROM deleted
ELSE
--不存在s_Backup,创建后入再插入
SELECT * INTO S_Backup FROM deleted
PRINT '备份数据成功!'
GO