实验8补充 创建触发器
- 格式:ppt
- 大小:102.50 KB
- 文档页数:19
触发器的创建实验实验一:创建一个INSERT触发器“TR_Stu_Insert”,当在STUDENT表中插入一条新记录时,触发该触发器,并给出“你插入了一条新记录!”的提示信息。
实现本题的方法如下:步骤一:在SQL Server管理控制台中,展开STUDENT数据库,右击STUDENT表中的“触发器”文件夹。
从弹出的快捷菜单中选择“新建触发器”选项。
步骤二:单击“查询”菜单中的“指定模板参数的值”菜单项,在“指定模板参数的值”对话框中,将参数“Schema_Name”的值修改为“dbo”,参数“Trigger_Name”的值修改为“TR_Stu_Insert”,参数“Table_Name”的值修改为“T_STUDENT”,参数“Data_Modification_Statements”的值修改为“INSERT”。
单击“确定”按钮。
步骤三:在新建触发器模板窗口中,在BEGIN和END语句之间输入以下3条语句:DECLARE @msg char(30)SET @msg='你插入了一条新记录!'PRINT @msg步骤四:单击工具栏上的“执行”按钮,即可完成此触发器的创建。
实验二:创建了Stu_Insert触发器后,查看向T_STUDENT表中插入数据时,此触发器所完成的功能:检查该学生的选修课程必须在3门以上,否则拒绝该学生数据。
在SQL Server管理控制台中新建一个查询,并输入以下SQL语句:USE STUDENTGOinsert into T_STUDENT(S_NUMBER,S_NAME,SEX)values('0554115','王小帆','女')GO实验三:创建一个AFTER触发器,要求实现以下功能:在SCORE表上创建一个插入、更新类型的触发器TR_ScoreCheck,当在SCORE字段中插入或修改考试分数后,触发该触发器,检查分数是否在0-100之间。
实验8 触发器设计一、实验目的:通过本实验了解数据库触发器的概念,掌握触发器完整性设计方法。
二、实验原理触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程,由服务器自动激活可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力。
创建触发器语法格式CREATE TRIGGER <触发器名>{BEFORE | AFTER} <触发事件> ON <表名>FOR EACH ROW[WHEN <触发条件>]<触发动作体>触发时间:Before, AFTER触发事件:insert,update, delete删除触发器:drop trigger <触发器名>显示创建触发器脚本>show create trigger <触发器名>>show triggers;三、实验内容及方法实验平台操作系统:win7,数据库管理平台:mysql5.6或者mysql8,实验用数据库:老师提供的数据库脚本TradeDBSQL.txt(一)触发器应用于数据库完整性设计实体完整性-PK参照完整性-FK用户定义完整性1.参照完整性级联约束在订单表Orders(主表)与订单细节表OrderDetails(副表)中实现更新、删除级联是通过下列方式实现的foreign key(OrderID) references Orders (OrderID)on delete cascade on update cascade用下面的更新、删除触发器实现上面的更新、删除级联1)更新级联触发器orderd_updDELIMITER %% /* 用%% 代替; 作为命令结束符*/Create trigger orderd_upd /* 创建触发器名为orderd_upd */after update on Orders /* 在表orders 上建立更新后触发器*/for each row /* 对于每一行*/begin/* 在表orders上更新后自动更新OrderDetails 表*/ update OrderDetails set OrderID = new.OrderID where OrderID=old.OrderID; end %%特别要注意new,old 的区别old 表示更新前的一行记录(for each row)new 表示更新为新的数据的一行记录。
触发器的创建和管理实验——图书馆日常事务管理系统触发器的创建和管理1.创建触发器(1)使用SSMS建触发器在TSJYMS数据库的图书类别表上创建一个名为tslb_insert_trigger的触发器,当执行INSERT操作时,该触发器被触发,禁止插入记录。
CREA TE TRIGGER tslb_insert_trigger ON图书类别FOR INSERTASBEGINPRINT('禁止插入记录!')ROLLBACK TRANSACTIONEND(2)使用T-SQL语句创建触发器①在TSJYMS数据库的图书明细表上创建一个名为ts_delete_trigger的触发器,当执行DELETE操作时,该触发器被触发,禁止删除记录。
CREA TE TRIGGER ts_delete_trigger ON图书明细表FOR DELETEASBEGINPRINT('禁止删除记录!')ROLLBACK TRANSACTIONEND②在TSJYMS数据库的借还明细表上创建一个名为jhmx_update_trigger的触发器,当执行UPDARE操作时,该触发器被触发,不允许修改表中的图书编号。
CREA TE TRIGGER jhmx_update_trigger ON借还明细表INSTEAD OF UPDA TEASIF UPDA TE(图书编号)PRINT('禁止删除记录!')2)多表级联更改触发器的创建①在TSJYMS数据库的读者信息表上创建一个名为dzxx_insert_trigger的触发器,当在读者信息表中插入记录时,将该记录中的借书证号自动插入借还明细表中。
CREA TE TRIGGER dzxx_insert_trigger ON读者信息FOR INSERTASDECLARE@NUM CHAR(20)SELECT@NUM=借书证号FROM INSERTEDINSERT借还明细表(借书证号)VALUES(@NUM)②在TSJYMS数据库的图书明细表上创建一个名称为tsmx_update_trigger触发器,当修改图书明细表中的图书编号时,如果借还明细表中引用了该图书编号,则禁止修改,并提示“不能修改!”CREA TE TRIGGER tsmx_update_trigger ON图书明细表FOR UPDA TEASIF UPDA TE(图书编号)BEGINDECLARE@BIANHAO CHAR(20)SELECT@BIANHAO=DELETED.图书编号FROM DELETEDIF EXISTS(SELECT图书编号FROM借还明细表WHERE图书编号=@BIANHAO) BEGIN PRINT('用户不能修改!')ROLLBACK TRANSACTIONENDELSEPRINT('修改完成!')END3)触发器功能验证对所创建的各种触发器进行功能验证,检查其设计的正确性。
《数据库系统原理》实验报告八题目:实验八触发器学号:xxxxxxxxxxx 姓名:lrm_1036 日期:2010-12-30一、实验环境:SQL server 2005二、实验目的:1. 掌握创建、修改、删除和执行触发器的方法;2. 完成上机练习。
三、实验内容与完成情况:(要求:提交源程序并标识必要的注释。
保证程序能正确编译和运行,认真填写实验报告。
)1.创建和执行触发器(1)交互式为数据库表Student创建一级联更新触发器TRIGGER_S(要求:若修改Student表中一学生的学号,则SC表中与该学生相关的学号自动修改)·启动SSMS,在“对象资源管理器”中,展开“数据库”→“实验”→“表”→“dbo.Student对象”。
右击“触发器”,在打开的快捷菜单中,选择“新建触发器”,打开触发器编辑窗口,如图1.1所示.图1.1·将窗口内模板语句修改为下列SQL语句:CREATE TRIGGER TRIGGER_SON Student FOR UPDATE AS IF UPDATE(SNO)BEGINDECLARE @SNO_NEW INT, @SNO_OLD INT--声明SELECT @SNO_NEW=SNO FROM INSERTED --查找新数据和SELECT @SNO_OLD=SNO FROM DELETED --查找旧数据UPDATE SC SET SNO=@SNO_NEW WHERE SNO=@SNO_OLD--把新数据更新到SC表中END·单击工具栏中的分析按钮,检查语法是否正确。
·单击执行按钮,保存创建的触发器,如图1.2所示。
图1.2·验证触发器的作用:a.在SSMS中,打开数据库表Student和SC的数据表,可以看到,在Student中学号为1001的学生在SC表中有3条记录。
b.查看数据库表Student和SC之间是否已创建外键参照关系,若已创建,则删除。
实验报告触发器实验报告:触发器引言:触发器是数字电路中常见的重要元件,它可以存储和控制信号的传输。
本实验旨在通过实际搭建触发器电路,了解其工作原理和应用。
一、实验目的本实验的目的是通过实际搭建触发器电路,掌握触发器的工作原理、特性和应用。
二、实验器材和原理2.1 实验器材:- 电路实验板- 电源- 电压表- 电流表- 逻辑门芯片- 连接线2.2 实验原理:触发器是一种存储器件,可以存储和控制信号的传输。
它由多个逻辑门组成,根据输入信号的不同,可以分为RS触发器、D触发器、JK触发器和T触发器等多种类型。
三、实验步骤3.1 搭建RS触发器电路首先,将两个逻辑门芯片连接在电路实验板上,一个作为RS触发器的输入端,另一个作为输出端。
然后,将电源和适当的电阻连接到逻辑门芯片上,以提供所需的电压和电流。
最后,根据电路图连接连线,搭建完整的RS触发器电路。
3.2 检验和调试电路在搭建好电路后,使用电压表和电流表检验电路的电压和电流是否正常。
如果有异常,需要及时排除故障。
然后,通过改变输入信号,观察输出信号的变化。
根据实验结果,对电路进行调试,确保触发器的正常工作。
3.3 测试触发器的特性在调试完电路后,可以进行一些实验来测试触发器的特性。
例如,可以通过改变输入信号的频率和占空比,观察输出信号的变化。
还可以通过改变逻辑门芯片的类型,比较不同类型触发器的性能差异。
四、实验结果和分析通过实验,我们可以得到触发器的工作特性和性能数据。
根据实验结果,我们可以分析触发器的优缺点,以及在数字电路设计中的应用。
五、实验总结触发器作为数字电路中的重要元件,在现代电子技术中得到了广泛应用。
通过本实验,我们深入了解了触发器的工作原理、特性和应用。
同时,我们也学会了搭建触发器电路、调试电路和分析实验结果的方法。
六、实验心得通过本次实验,我深刻认识到了触发器在数字电路中的重要性。
触发器可以存储和控制信号的传输,是数字电路中的核心部件之一。
实验8 存储过程和触发器1.实验目的(1)掌握通过SQL Server管理平台和Transact-SQL语句CREATE PROCEDURE 创建存储过程的方法和步骤。
(2)掌握使用Transact-SQL语句EXECUTE执行存储过程的方法。
(3)掌握通过SQL Server管理平台和Transact-SQL语句ALTER PROCEDURE 修改存储过程的方法。
(4)掌握通过SQL Server管理平台和Transact-SQL语句DROP PROCEDURE删除存储过程的方法。
(5)掌握通过SQL Server管理平台和Transact-SQL语句CREATE TRIGGER创建触发器的方法和步骤。
(6)掌握引发触发器的方法。
(7)掌握使用SQL Server管理平台或Transact-SQL语句修改和删除触发器。
(8)掌握事务、命名事务的创建方法,了解不同类型的事务的处理情况。
2.实验内容及步骤(1)在查询设计器中输入以下代码,创建一个利用流控制语句的存储过程letters_print,该存储过程能够显示26个小写字母。
CREATE PROCEDURE letters_printASDECLARE @count intSET @count=0WHILE @count<26BEGINPRINT CHAR(ASCII('a')+ @count)SET @count=@count +1END单击查询分析器的“执行查询”按钮,查看studentsdb数据库的存储过程是否有letters_print。
使用EXECUTE命令执行letters_print存储过程。
(2)输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名对应的学生的各科成绩。
CREATE PROCEDURE stu_info @name varchar(40)ASSELECT a.学号,姓名,课程编号,分数FROM student_info a INNER JOIN grade taON a.学号= ta.学号WHERE 姓名= @name使用EXECUTE命令执行存储过程stu_info,其参数值为“马东”。
创建触发器创建触发器的语法格式如下图:CREATE TRIGGER语句⽤于将触发器添加到数据库中。
所谓触发器是指在发⽣指定的数据库事件时⾃动执⾏的数据库操作。
通常情况下,触发器必须指定⼀个关联表,当这个关联表发⽣了触发器指定的操作时,触发器就将⾃动进⾏定义的操作。
例如:CREATE TRIGGER tri_t1 before insert on t1Begin……End.通常情况下,触发器有三个要素:时机,即什么时候启动触发器。
条件,即启动触发器的条件。
关联表,这个是触发器关联的数据表,当数据表删除时,也会⾃动删除创建的触发器;在SQLITE中,时机部分是可忽略的(默认是before),⽽条件是不允许省略的,每个触发器必须指定将针对以下操作之⼀触发:DELETE,INSERT,UPDATE。
触发器为删除,插⼊或更新的每⼀⾏触发⼀次。
如果BEFORE UPDATE或BEFORE DELETE触发器修改或删除了将要更新或删除的⾏,则后续更新或删除操作的结果很难确定。
此外,如果BEFORE触发器修改或删除了⼀⾏,则不确定是否会触发在其他⾏上的AFTER触发器。
因此,如果使⽤BEFORE,则尽量不要对改⾏数据进⾏删除或更改。
此外,在INSERT操作中使⽤BEFORE操作时,如果表中没有显⽰的ID栏,则不会更改NEW.rowid的值。
当然,通常情况下,此时的NEW.rowid值通常情况下也不重要。
事实上,如果定义了⾮空的ID值,⽽在插⼊数据前并不知道这个值时,使⽤BEFORE INSERT的触发器其实挺⽅便有效的。
例如,每次插⼊数据时,设置NEW.ID为max(ID)+1,即可以避免缺少⾮空值的缺乏⽽报警,⼜能避免ID值重复。
通过在CREATE TRIGGER语句中指定INSTEAD OF,可以在视图以及普通表上创建触发器。
如果在视图上定义了⼀个或多个ON INSERT,ON DELETE或ON UPDATE触发器,那么分别在视图上执⾏INSERT,DELETE或UPDATE语句就不会出错。
实验八触发器的使用一、实验目的●掌握触发器的创建、修改和删除操作。
●掌握触发器的触发执行。
●掌握触发器与约束的不同。
二、实验要求1.创建触发器。
2.触发器执行触发器。
3.验证约束与触发器的不同作用期。
4.删除新创建的触发器。
三、实验内容(一)示例1.创建触发器①启动SQL Server 查询编辑器,选择要操作数据库,如“sc(学生选课)”数据库。
②在查询命令窗口中输入以下CREATE TRIGGER语句,创建触发器。
为sc(学生选课)表创建一个基于UPDATE操作和DELETE操作的复合型触发器,当修改了该表中的成绩信息或者删除了成绩记录时,触发器被激活生效,显示相关的操作信息。
2.触发触发器①在查询命令窗口中输入以下UPDATE sc语句,修改成绩列,激发触发器。
UPDATE scSET grade=grade+5WHERE 课程号=’3’②在查询命令窗口中输入以下UPDATE sc语句修改非成绩列,激发触发器。
UPDATE scSET cno=’9’WHERE 课程号=’1’③在查询命令窗口中输入以下DELETE sc 语句,删除成绩记录,激发触发器。
DELETE scWHERE cno=’7’3. 比较约束与触发器的不同作用期①在查询命令窗口中输入并执行以下ALTER TABLE 语句,为sc表添加一个约束,使得成绩只能大于等于0且小于等于100。
ALTER TABLE scADD CONSTRAINT CK_成绩CHECK(grade>=0 ANDgrade<=100)②在查询命令窗口中输入并执行以下UPDATE sc语句,查看执行结果。
UPDATE scSET grade=120WHERE cno=’3’③在查询命令窗口中输入执行以下UPDATE sc语句,查看执行结果。
UPDATE scSET grade=90WHERE cno=’3’4. 删除新创建的触发器①在查询命令窗口中输入DROP TRIGGER 语句,删除新创建的触发器。
触发器及应用实验的过程触发器是数据库中的一个概念,用于在特定的数据库操作(例如插入、更新、删除)发生时自动触发一些事先定义好的操作。
触发器通常用于确保数据的一致性,并对数据库中的操作进行监控和管理。
在本文中,我将介绍触发器的基本概念和一些常见的应用实例,并详细讲解触发器及应用实验的过程。
一、触发器的基本概念触发器是数据库中的一个对象,它与特定的表相关联,并且在表中的特定操作发生时被自动激活。
触发器可以定义在以下几种操作上:1. INSERT:当在表中插入一条新记录时触发。
2. UPDATE:当更新表中的记录时触发。
3. DELETE:当在表中删除一条记录时触发。
触发器通常由以下几个组成部分构成:1. 触发时间:指定触发器被激活的时间,可以是在操作之前(BEFORE)或操作之后(AFTER)。
2. 触发事件:指定触发器与之相关联的操作,即INSERT、UPDATE或DELETE。
3. 触发操作:指定触发器被激活时执行的具体操作,可以是SQL语句或存储过程。
二、触发器的应用实例触发器在数据库中有很多应用实例,下面列举几个常见的例子来说明触发器的用法。
1. 数据完整性约束触发器可以用来维护数据库的数据完整性。
例如,当在订单表中插入一条订单记录时,可以使用触发器检查该订单的总金额是否小于客户的信用额度。
如果超出了信用额度,触发器可以自动拒绝该操作。
2. 记录审计跟踪触发器可以用来跟踪对数据库的变更操作。
例如,可以创建一个触发器,在每次更新员工表时,自动记录这个更新的操作人员、时间和变更的内容。
3. 数据集成与同步触发器可以用来实现数据库之间的数据集成和同步。
例如,当在一个数据库中插入一条新的产品记录时,可以使用触发器将该记录同步到其他相关的数据库中。
三、触发器及应用实验的过程下面将介绍触发器及应用实验的具体过程。
1. 创建触发器首先,我们需要创建一个触发器对象,并指定它与哪张表相关联以及在何时触发。
例如,可以使用以下语句创建一个在订单表上触发的触发器:CREATE TRIGGER `order_audit_trigger` AFTER INSERT ON `order`FOR EACH ROW BEGIN触发器的具体操作INSERT INTO `order_audit` (`order_id`, `user_id`, `create_time`)VALUES (NEW.`id`, NEW.`user_id`, NOW());END;在这个例子中,触发器将在订单表上的每次插入操作之后激活,并向order_audit表中插入一条相应的审计记录。
天津师范大学软件学院数据库原理实践课程实验卡
实验序号:8 实验室名称:计信学院实验室
实验名称数据库的触发器
实验类型验证计划学时 2 人组数 1 首开日期
面向专业(逐个填写)
主要配置仪器设备名称设备规格型号每组台件数
1.计算机 1
2.投影仪 1
消耗材料名称每组消耗量消耗材料名称每组消耗量
实验项目简介
实验目的:
通过上机实验验证数据库的触发器操作。
实验内容:
1、将students数据库还原。
2、在students数据库中,完成以下单表查询的操作,将每一个程序保存为.sql。
(1)创建触发器每当用户在SC表中插入一行数据时,就显示一个提示信息。
(2)创建触发器限定Course表中Semester的取值范围为1-10。
(3)创建触发器限制每个学期开设的课程总数不能超过10门,如果超过了10门,则给出提示信息:本学期课程太多。
(4)创建触发器在SC表中,不能删除考试成绩不及格学生的该门课程的考试记录。
(5)创建触发器在SC表中,不能将不及格的考试成绩改为及格。
(6)创建触发器防止在Students数据库中删除和更改任何表。
实验要求:
(1)在SQL Server2008中完成上述操作,将数据库重新备份。
(2)将每一个.sql程序包成一个文件,提交该压缩文件。
1。