实训十 触发器的创建和使用
- 格式:doc
- 大小:38.50 KB
- 文档页数:3
触发器认知实习报告一、前言触发器是数字电路中常见的一种基本电路,它能够在输入信号发生变化时产生输出信号的跃变。
本次实习的主要任务是理解和掌握触发器的工作原理,以及如何设计和实现触发器。
二、实习内容和过程实习的第一步是了解触发器的基本概念和分类。
触发器可以根据其工作原理和功能特点分为多种类型,如同步触发器、异步触发器、边沿触发器、计数触发器等。
在实习过程中,我通过阅读相关资料和教材,对触发器的分类和工作原理有了深入的了解。
接下来,我进行了触发器的设计和实现。
首先,我选择了同步触发器作为实习对象,因为它是最常见的一种触发器,其原理也比较简单。
我使用电路设计软件,根据同步触发器的电路图,设计出了一个同步触发器的电路。
然后,我使用实验设备,搭建了同步触发器的实验电路,并进行了实验验证。
通过实验,我进一步理解了同步触发器的工作原理和特性。
在设计同步触发器的基础上,我又进一步设计了异步触发器和边沿触发器。
异步触发器的工作原理与同步触发器不同,它不需要时钟信号的控制,而是根据输入信号的变化来产生输出信号的跃变。
边沿触发器则是一种特殊的触发器,它只能在输入信号的边沿时刻产生输出信号的跃变。
通过设计和实现这两种触发器,我对触发器的理解和掌握更加深入。
三、实习成果和收获通过本次实习,我深入理解了触发器的基本概念、分类和工作原理,掌握了触发器的设计和实现方法。
同时,我也通过实验验证了触发器的特性和性能,提高了自己的实验能力和动手能力。
实习过程中,我也发现了一些问题,如触发器的稳定性和抗干扰性等。
这些问题需要我在今后的学习和研究中进一步深入探讨和解决。
四、对未来工作的建议通过本次实习,我对触发器有了更深入的理解和掌握。
在今后的学习和工作中,我将继续深入研究触发器的相关理论和应用,提高自己的专业素养和技能水平。
同时,我也将注重实践能力的培养,不断丰富自己的实验经验和实践能力。
总之,本次实习是一次非常有意义的实践过程,我对触发器的理解和掌握有了很大的提高。
一、实验背景随着信息技术的飞速发展,数据库技术在各行各业中的应用越来越广泛。
数据库触发器作为数据库管理系统的重要组成部分,具有强大的功能,能够帮助用户实现复杂的数据操作和业务逻辑。
为了提高学生对数据库触发器的理解与应用能力,我们开展了数据库触发器实验实训。
二、实验目的1. 掌握触发器的概念、作用及分类;2. 熟悉触发器的创建、修改和删除操作;3. 学会使用触发器实现业务规则和数据完整性;4. 提高数据库编程能力,为以后的实际工作打下基础。
三、实验环境1. 操作系统:Windows 102. 数据库:MySQL 5.73. 编程语言:Python四、实验内容1. 触发器的基本概念触发器是一种特殊的存储过程,它在特定事件发生时自动执行。
触发器可以分为两大类:DML触发器和DDL触发器。
DML触发器包括INSERT、UPDATE和DELETE触发器,用于在数据操作时执行特定的逻辑;DDL触发器用于在数据定义语言操作时执行特定的逻辑。
2. 触发器的创建以MySQL为例,创建触发器的语法如下:DELIMITER //CREATE TRIGGER 触发器名称BEFORE|AFTER INSERT|UPDATE|DELETE ON 表名BEGIN-- 触发器逻辑END;//DELIMITER ;例如,创建一个名为before_insert_trigger的触发器,在向bookinfo表插入数据之前执行:DELIMITER //CREATE TRIGGER before_insert_triggerBEFORE INSERT ON bookinfoFOR EACH ROWBEGINIF NEW.price > 100 THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Book price should not exceed 100';END IF;END;//DELIMITER ;3. 触发器的修改修改触发器的语法与创建触发器类似,只需要使用ALTER TRIGGER语句:ALTER TRIGGER 触发器名称BEFORE|AFTER INSERT|UPDATE|DELETE ON 表名BEGIN-- 触发器逻辑END;例如,修改上述触发器,限制书籍价格不超过50元:DELIMITER //ALTER TRIGGER before_insert_triggerBEFORE INSERT ON bookinfoFOR EACH ROWBEGINIF NEW.price > 50 THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Book price should not exceed 50';END IF;END;//DELIMITER ;4. 触发器的删除删除触发器的语法如下:DROP TRIGGER IF EXISTS 触发器名称;例如,删除上述触发器:DROP TRIGGER IF EXISTS before_insert_trigger;5. 触发器与存储过程的区别触发器和存储过程都是数据库编程的重要工具,但它们之间存在一些区别:(1)触发器在特定事件发生时自动执行,而存储过程需要手动调用;(2)触发器只能包含一个语句块,而存储过程可以包含多个语句块;(3)触发器不能返回结果集,而存储过程可以返回结果集。
x x大学计算机与信息技术学院实验报告姓名学号专业班级课程名称数据库系统概论实验日期成绩指导教师批改日期实验名称创建和使用触发器实验内容[目的和意义]理解触发器的触发过程和类型,掌握创建触发器的方法。
[实验内容]掌握使用对象资源管理器和Transact-SQL语句两种方法创建触发器。
[实现步骤]启动SSMS,链接到数据库实例,在“对象资源管理器”窗口里,选择“数据库实例”,→“数据库”→“学生管理系统”→“表”→“Student”→“触发器”右键快捷菜单的“新建触发器”,打开“创建触发器”模板,如图5-1所示。
在“创建触发器”模板中,修改代码,或者选择“查询”→“指定参数模板”选项,打开“指定模板参数的值”,指定模板参数后,在模板里修改其他代码,如图5-2。
然后单击“运行”按钮,完成触发器的创建。
当输入Insert into Student1 values (2007241082 ‘王阳’‘男’ 36 ‘计算机’);建立的触发器执行了其功能。
例2:create trigger sson studentfor insertasbegindeclare@xh smallint;select@xh=inserted.Sagefrom inserted;if exists(select sno from student where Sage=@xh) update student set sage=@xh+1 where Sage=@xh; end;当执行以下语句时insert into studentvalues('200515124','zp','男',20,'ma');结果中Sage为20的元组都加上了1。
例3:创建触发器:执行SQL语句:结果使student表中的所有元组的sage均变为20:。
数据库头歌实训触发器的创建和使用数据库头歌是一款广泛应用于企业和个人的开源数据库管理系统软件,其功能强大并且易于使用。
在实际应用中,触发器是数据库头歌中一个重要的功能,可以在特定的数据库操作时自动执行一系列的动作,对数据库进行监控和管理。
本文将介绍数据库头歌实训触发器的创建和使用方法,帮助读者更好地理解和应用触发器功能。
一、触发器的概念和作用触发器是一种特殊的存储过程,它在特定的数据库操作(如插入、更新、删除)发生时自动触发执行。
触发器可以用于监控数据库的变化,执行一些自定义的操作,或者实现数据的约束和一致性。
在实际应用中,触发器常常用于记录数据变更历史、更新相关表的数据、进行数据校验等方面。
二、创建触发器的语法和步骤在数据库头歌中,创建触发器需要遵循一定的语法和步骤,下面是创建触发器的基本语法:CREATE TRIGGER trigger_nameBEFORE/AFTER INSERT/UPDATE/DELETE ON table_nameFOR EACH ROWBEGIN-- 触发器逻辑代码END;其中,trigger_name是触发器的名称,table_name是触发器所属的表,BEFORE/AFTER指定触发器在数据操作之前或之后执行,INSERT/UPDATE/DELETE指定触发器监控的数据库操作类型,FOR EACH ROW表示每行数据发生操作时触发。
触发器逻辑代码可以是一系列的SQL语句,用于处理触发器监控的数据库操作。
创建触发器的步骤如下:1. 连接数据库头歌,选择要创建触发器的数据库。
2. 使用CREATE TRIGGER语句创建触发器,指定触发器的名称、所属表、触发时机和逻辑代码。
3. 执行CREATE TRIGGER语句,成功创建触发器。
三、触发器的使用示例下面通过一个具体的示例来演示数据库头歌实训触发器的创建和使用。
假设有一个学生表(student)和一个成绩表(score),我们希望在学生表插入新记录时自动在成绩表中插入一条初始成绩记录,可以通过触发器来实现这一功能。
触发器——实验报告本次实验主要针对的是数据库的触发器,触发器可以在数据库中对指定的事件进行响应,可以在事件发生前或发生后对相关的SQL语句进行处理,从而实现对数据的限制、约束等相关操作。
本次实验的目标是通过实例了解什么是触发器,如何创建触发器以及触发器的应用。
一、实验环境本次实验使用MySQL数据库作为实验环境。
二、实验步骤1. 创建数据库和表结构首先,需要创建一个新的数据库,并新建一张表来进行触发器的测试。
这里,我们创建一个名为“students”的数据库和“grades”表。
表结构如下:CREATE TABLE grades(id int(11) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;2. 创建触发器接下来,我们要创建一个触发器来对数据进行限制。
比如,我们想对成绩的输入进行限制,限制只能输入0-100之间的分数。
创建触发器的语法如下:CREATE TRIGGER trigger_name{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_nameFOR EACH ROWBEGIN-- 触发器的处理END;以上语法中,trigger_name是触发器的名称,table_name是触发器所作用的表名,BEFORE或AFTER关键字表明触发器是在事件发生前还是发生后进行处理的,在本次实验中,我们使用BEFORE关键字,表示在事件发生前进行处理。
触发器可以应用在INSERT、UPDATE、DELETE事件上,我们用INSERT事件做例子,表示在插入数据之前实现相应的数据限制。
触发器中的处理代码可以是任何合法的SQL语句,其中可以使用NEW和OLD关键字来引用触发器作用的记录,NEW表示要插入或者修改的记录,OLD表示删除的记录。
实验十触发器的创建和使用
一、实验目的
1)理解触发器的概念与类型
2)理解触发器的功能及工作原理
3)掌握创建、修改和删除触发器的方法
4)掌握利用触发器维护数据完整性的方法
二、实验内容
触发器是一种实施复杂数据完整性的特殊存储过程,在对表或视图执行UPDATE、INSERT、DELETE语句时自动触发执行,以防止对数据进行不正确、未授权或不一致的修改。
1)使用T-SQL语句创建一个DELETE触发器,完成的功能是当在Categories 表中删除记录时,检测Products表中是否存在相关的记录,如果存在,则给出提示信息“不能删除该条记录”;如果不存在,则删除该条记录。
CREATE TRIGGER TRG_CATEGORIES ON CATEGORIES
FOR DELETE
AS
BEGIN
DECLARE @ID CHAR(10)
SELECT @ID=CATEGORYID FORM INSERTED
IF EXIST(SELECT * FROM PRODUCTS WHERE CATEGORYID=@ID)
BEGIN
PRINT ‘不能删除该条记录’
ROLLBACK TRAN
END
END
2)基于Salers表创建一个触发器,针对INSERT、DELETE、UPDATE操作。
当执行INSERT、UPDATE语句时,将inserted表中的数据打印出来当执行DELETE、UPDATE语句时,将deleted表中的数据打印出来。
3)使用系统存储过程修改触发器的名称。
4)删除上题创建的触发器。
三、分析与讨论
触发器主要用于实施什么类型的数据完整性?。
实训十触发器的创建和使用
一、实训目的
1. 理解触发器的作用;
2. 了解触发器和一般存储过程的区别;
3. 掌握创建、修改及删除触发器的方法;
4. 理解触发器执行的过程。
二、实训步骤
(一) 简单触发器的创建和使用
1.在student数据库中t_course表创建一名为myt1的AFTER触发器,要求实现以
下功能:当插入一条记录后提示“已插入一条新记录”,并验证此触发器。
2.在student数据库中t_course表创建一名为myt2的AFTER触发器,要求实现以
下功能:当删除一条记录后提示“已删除一条记录”,并验证此触发器。
3.在student数据库中t_course表创建一名为myt3的AFTER触发器,要求实现以
下功能:当修改一条记录后提示“已修改一条记录”,并验证此触发器。
4.在student数据库中t_course表创建一名为myt4的INSTEAD OF触发器,要求
实现以下功能:当删除一条记录之前提示“不能删除此表的记录!”,并验证此触发器,检查是否能删除此表的记录。
5.删除以上创建的所有触发器。
(二) 较复杂的触发器的创建和使用
1. 创建一个AFTER触发器,要求实现以下功能:在t_score表上创建一个插入更新
类型的触发器scoreCheck,当在score字段中插入或修改考试分数后,触发该触发器,检查分数是否在0至100分之间。
(参考教材P186的例10-3,运行后发现尽管分数不在0至100分之间,但还是能够插入和修改)
2. 创建一个AFTER触发器,要求实现以下功能:在t_score表上创建一个插入更新
类型的触发器scoreCheck2,当在score字段中插入或修改考试分数后,触发该触发器,检查分数是否在0至100分之间,若不在,则不能插入或修改,并给出提示。
代码段如下:
CREATE TRIGGER scoreCheck2
ON t_score
FOR insert, update
AS
declare @ScoreValue as int
select @ScoreValue =(select score from inserted)
if @ScoreValue <0 or @ScoreValue >100
begin
rollback transaction
print '数据不正确不能修改'
end
验证上面创建的触发器,检查当输入的分数不在0到100之间,能否保存分数。
此功能的实现是依赖代码段的黑体字标识的语句rollback transaction来实现的,其作用是回滚变动的数据。
教材没有此语句。
3.根据教材第4章P68创建一个检查约束,实现上述2的功能。
体会触发器与检查
约束功能上的相似之处。
4.在student数据库中t_course表创建一名为twofield的AFTER触发器,要求实
现以下功能:当在hours(学时)和credit(学分)字段插入或修改学时或学分后,触发该触发器,检查学时是否是大于0小于200的整数,并且学分是否是大于0小于10的实数,若不满足这两个条件,则不允许插入或修改,并给出提示。
CREATE TRIGGER twofield
ON t_course
FOR insert, update
AS
declare @h as int,
@c as real
select @h =(select hours from inserted)
select @c =(select credit from inserted)
if @h<0 or @h>200 or @c<0 or @c>10
begin
rollback transaction
print '数据不正确不能修改'
end
5.根据教材第4章P68创建一个检查约束,实现上述4的功能。
体会触发器与检查
约束功能上的相似之处。
6.创建一个AFTER触发器,要求实现以下功能:在t_student表上创建一个删除类
型的触发器stu_delete,当在t_student表中删除某一条记录后,触发该触发器,在t_score表中删除与此学号对应的记录。
(参考教材P187的例10-4)
7.分析能用外键约束实现上述6的功能吗?由此体会触发器与外键约束的不同之外
处。
8.创建一个INSERT触发器,完成的功能是当在t_score表中插入或修改s_number
列的数据时,检测t_student表中是否存在相应的s_number值,如果不存在,则不允许插入和修改,并给出相应的提示信息。
提示:代码段如下:
CREATE TRIGGER newt
ON t_score
FOR INSERT, UPDATE
AS
declare @t as char(10)
select @t =(select s_number from inserted)
if @t in (select s_number from t_student)
print '已插入或修改'
else
begin
rollback transaction
print '学生信息表中不存在该学号,所以不能插入或修改'
end
三、思考题
1.简述触发器与存储过程的区别。
2.简述触发器的作用。
3.简述触发器与检查约束的相同和不同的地方。
4.简述AFTER触发器与INSTEAD OF触发器的区别。