概述
实验6 触发器设计
一、实验目的
1.能够理解触发器调用的机制。
2.能够使用SQL命令创建DML触发器。
3.能够完成触发器的修改、删除等管理任务。
二、实验要求
充分了解触发器设计的原理与过程。
三、实验内容
针对前面实验建立的SPJ数据库,做如下操作。
1. 创建触发器tri1,实现当修改项目表J中的数据时,显示提示信息“项目表信息修改成功!”
CREATE TRIGGER tri1
ON J AFTER UPDATE
AS
PRINT'项目表信息修改成功!'
2. 使用触发器tri2,实现当修改零件表P中某种零件的编号时,对应SPJ表中的零件编号也要修改。
CREATE TRIGGER tri2 ON P
AFTER UPDATE
AS
BEGIN
DECLARE @old_PNO char(4)
DECLARE @new_PNO char(4)
SELECT @old_PNO=PNO FROM deleted
SELECT @new_PNO=PNO FROM inserted
UPDATE SPJ SET PNO=@new_PNO WHERE PNO=@old_PNO
END
更新语句:
UPDATE P SET PNO='P20'WHERE PNO='P2'/*此处数据大家更改一下*/
3. 首先创建一个空的表S_del_copy,其表结构与供应商表S结构相同。 创建触发器tri3,当删除供应商表S中的一条记录时,自动将删除的记录保存到S_del_copy表中。
创建一个与S结构相同的空表
SELECT * INTO S_del_copy
FROM S
WHERE 1=2
创建触发器:
CREATE TRIGGER tri3
ON S AFTER DELETE
AS
BEGIN
--声明4个变量对应S中4个列
DECLARE @var_sno char(4), @var_sname varchar(20)
DECLARE @var_stauts char(4), @var_city char(10)
--将保存在Deleted临时表中的记录内容保存到相应的变量中
SELECT @var_sno =SNO, @var_sname =SNAME,
@var_stauts=STATUS, @var_city =CITY
FROM Deleted;
--往S_del_copy表中插入新记录
INSERT S_del_copy(sno,sname,status,city)
VALUES(@var_sno,@var_sname,@var_stauts,@var_city)
END
删除语句:
进行删除之前把S表的主键删除掉才能运行成功,不然会有主键限制
DELETE FROM S WHERE SNO='S2'/*此处数据大家更改一下*/
4. 查看供应商表S中已经创建的触发器。
SELECT *
FROM SYSOBJECTS
WHERE XTYPE='TR' AND parent_obj=OBJECT_id('S')
5.查看已创建的触发器tri1的内容。
EXEC SP_HELPTEXT 'tri1'
6.删除项目表J上的触发器tri1。
DROP TRIGGER tri1
希望大家能够点点关注,点点赞啦!!!
最后
以上就是细腻春天为你收集整理的SQLServer数据库实验——实验6 触发器设计的全部内容,希望文章能够帮你解决SQLServer数据库实验——实验6 触发器设计所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复