数据库原理实验报告S11-数据库触发器的创建

合集下载

触发器实验报告

触发器实验报告

数据库原理及应用实验报告成绩:__________________________一、实验目的1.了解触发器的概念、优点2.掌握触发器的方法和步骤3.掌握触发器的使用二、实验平台Windows xp系统、oracle数据库三、实验步骤、出现的问题及解决方案(不能解决的将问题列出)1)实验步骤1、通过序列和触发器实现借阅表中借阅流水号字段的自动递增。

创建序列所用代码及运行截图:create sequence SEQ_borrIDMAXVALUE 1.0E28Start With5INCREMENT By1CACHE20order;创建触发器所用代码及运行截图:create or replace trigger tri_borrowbefore Insert On借阅For Each RowBeginSelect SEQ_borrID.Nextval Into :new.借阅流水号From DUAL;End;测试触发器所用代码及运行截图:insertinto借阅(借书证号,图书编号,借书日期)values(20081237,1005050,to_date('2002-08-26','yyyy/mm/dd'));测试结果截图:2、通过序列和触发器实现预约表中预约流水号字段的自动递增创建序列所用代码及运行截图:create sequence SEQ_reserIDMAXVALUE 1.0E28Start With1INCREMENT By1CACHE20order;创建触发器所用代码及运行截图:Create or Replace Trigger tri_reserBefore Insert On预约For Each RowBeginSelect SEQ_reserID.Nextval Into :new.预约流水号From DUAL;End;测试触发器所用代码及运行截图:insertinto预约(借书证号,ISBN,预约时间)values(20062001,9787506336239,to_date('2002-08-26','yyyy/mm/dd'));测试结果截图:3、修改实验三借书功能的存储过程。

数据库触发器实验

数据库触发器实验

数据库触发器实验创建基于表的触发器。

--删除已经存在的表T_TRIG。

DROP TABLE IF EXISTS T_TRIG;--删除已经存在的表T_TRIG_LOG。

DROP TABLE IF EXISTS T_TRIG_LOG;--删除已经存在的序列TRIG_LOG_SEQ。

DROP SEQUENCE IF EXISTS TRIG_LOG_SEQ;--删除已经存在的触发器TRIG_AFTER_INSERT。

DROP TRIGGER IF EXISTS TRIG_AFTER_INSERT;--删除已经存在的触发器TRIG_BEFORE_INSERT。

DROP TRIGGER IF EXISTS TRIG_BEFORE_INSERT;--创建表T_TRIG。

CREATE TABLE T_TRIG (ID INT, CREATE_DATE TIMESTAMP);--创建表T_TRIG_LOG。

CREATE TABLE T_TRIG_LOG (LOG_SEQ INT,LOG_DESC VARCHAR(30), CREATE_DATE TIMESTAMP);--创建序列TRIG_LOG_SEQ。

CREATE SEQUENCE TRIG_LOG_SEQ START WITH 1 INCREMENT BY 1;CREATE OR REPLACE TRIGGER TRIG_AFTER_INSERT AFTER INSERT ON T_TRIGBEGININSERT INTO T_TRIG_LOG VALUES(TRIG_LOG_SEQ.NEXTVAL,'after insert',systimestamp); END;/--创建一个触发器,在往T_TRIG表中INSERT一条记录之前,往T_TRIG_LOG中写一条描述为"beforeinsert"记录。

CREATE OR REPLACE TRIGGER TRIG_BEFORE_INSERT BEFORE INSERT ON T_TRIGBEGININSERT INTO T_TRIG_LOG VALUES(TRIG_LOG_SEQ.NEXTVAL,'before insert',systimestamp); END;/--往T_TRIG表中INSERT一条记录。

实验十一 数据库 触发器

实验十一 数据库 触发器

实验11 触发器一、实验目的1.掌握触发器的创建、修改、删除及其使用方法。

2.掌握触发器的功能。

二、实验内容(1)打开查询分析器,创建触发器。

例1:创建触发器trigger_Student, 如修改Student 表中某一学生的学号,则表SC中与该学生相关的学号自动别更新。

create trigger trigger_Studenton Student for updateasif update(Sno)begindeclare @newSno int,@oldSno intselect @newSno=Sno from insertedselect @oldSno=Sno from deletedupdate SC set Sno=@newSnowhere Sno=@oldSnoend激活触发器update Student set Sno='201015121' where Sno='200215121' select * from SC例2:创建一限制更新触发器trigger_SC,若修改表SC中一记录的学号,则要检查S中是否存在于该学生学号相同的记录,若有则不许修改,如没有则可修改create trigger trigger_SCon SC for updateasif update(Sno)begindeclare @newSno int,@oldSno int,@countSno intselect @oldSno=Sno from deletedselect @countSno=count(*) from Student where Sno=@oldSnoif @countSno<>0print '不允许修改'rollback transactionend激活触发器update SC set Sno='200215121' where Sno='201015121'例3:为SC表创建触发器trigger_Score,当插入一个记录或修改成绩时,确保此记录成绩在0-100之间。

数据库原理课程设计报告报告实验创建存储过程与触发器

数据库原理课程设计报告报告实验创建存储过程与触发器

存储过程与触发器实验日期和时间:2016 年 5 月13 日、星期五第节实验室:DJ2-信息管理实验室班级:学号:姓名:实验环境:1.硬件:笔记本电脑2.软件:SQL Server 2012实验原理:存储过程概念:存储过程是事先编好的,存储在数据库中的一组被编译了的T-SQL命令集合,这些命令用来完成对数据库的指定操作。

存储过程可以接受用户的输入参数、向客户端返回表格或标量结果和消息、调用数据定义语言(DDL)和数据操作语言(DML)语句,然后返回输入参数。

触发器概念:触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。

触发器经常用于加强数据的完整性约束和业务规则等。

实验任务:此作业成绩得分根据你完成的任务的难度和数量评分,完成后在实验室给老师演示验收,课后提交电子版报告。

如额外完成自拟题目应当事先将所拟题目提交给老师或在报告中明确标注题意。

假定有学校的图书馆管理信息系统,可以用于日常管理书库和同学们的借还书工作。

以下列出参考的库表情况:根据管理的业务需求来分析,该管理信息系统的数据库应至少包括如下数据表:(打★号的是必须有的表)1.★图书现有库存表。

作用:记录图书的现有库存情况。

至少包括:书号、书名、作者、简介、类别、价格、出版社、出版日期、现有库存数量、最小库存量、库存总量、库存位置等。

2.★读者信息表。

作用:记录读者信息。

至少包括:读者编号、证件类型、证件号码、姓名、性别、职业(可填写教师、学生、教工、其它……)、所属单位、地址、联系电话等。

3.★借书记录表。

作用:记录借书情况,以及是否归还。

至少包括:借阅ID(主键,可设置为自动编号)、书号、读者编号、借阅数量、借阅日期、是否归还、管理员编号……等。

第十一次数据库实验-触发器的建立与使用

第十一次数据库实验-触发器的建立与使用
SQL SERVER 为每个触发器都创建了两个临时表 INSERTED 表和 DELETED 表, 这两个表的逻辑结构与被触发器作用的表一样,用户可以读取这两个表的内容,但不 能对它们进行修改,触发器执行完后,这两个表也会自动删除。当执行 INSERT 时, INSERTED 表中保存要向表中插入的所有行;当执行 DELETE 时,DELETED 表中保 存要从表中删除的所有行;当执行 UPDATE 时,修改前的行保存在 DELETED 表中, 修改后的行保存在 INSERTED 行中。
二、实验内容:
1、 使用 CREATE TRIGGER 语句定义触发器,ALTER TRIGGER 语句修改触发器, DROP TRIGGER 语句删除触发器。 2、 触发器分 AFTER/FOR 和 INSTEAD OF 两种类型:AFTER/FOR 类型的触发器是 在相应的触发语句(insert、delete、update)执行完后被触发的。如果触发语句对应 的表上有完整性约束,这些完整性约束必须不违背时,相应的触发语句才能执行,然 后才能触发对应的 AFTER/FOR 类型的触发器。INSTEAD OF 类型的触发器会在触发 语句(insert、delete、update)执行之前被触发,并取代相应的触发语句。 3、 在表或视图上,每个 INSERT、UPDATE 或 DELETE 语句只能创建一个 INSTEAD OF 类 型的 触发器, 无法 为有外键约 束且指定为级联 删除或级联 修改的表创 建 DELETE 或 UPDATE 语句上的 INSTEAD OF 类型的触发器。
insert sales values (10002,'C0556','E0013',22700.00,'1996-11-10','I000000002')

数据库系统实验报告 触发器

数据库系统实验报告 触发器

实验4 触发器1、通过序列和触发器实现借阅表中借阅流水号字段的自动递增。

Create or replace sequence bwnum_idMinvalue 1Maxvalue 1.0E28Start with 1Increment by 1Cache 20;Create or Replace Trigger tri_bwnum_idBefore Insert On borrowFor Each RowBeginSelect bwnum_id.Nextval Into :new.bwnumFrom DUAL;End;2、通过序列和触发器实现预约表中预约流水号字段的自动递增Create sequence pnum_idMinvalue 1Maxvalue 1.0E28Start with 1Increment by 1Cache 20;Create or Replace Trigger tri_pnum_idBefore Insert On preborrowFor Each RowBeginSelect pnum_id.Nextval Into :new.pnumFrom DUAL;End;3、修改实验三借书功能的存储过程。

该存储过程要求:(1)借书时输入借书证号,图书编号。

(即该函数有2个输入参数)(2)借书时,借书日期为系统时间。

*该存储过程主体部分只有insert into语句。

create or replace Procedure p_borrow(P_BNUM IN BORROW.BNUM%TYPE,P_RNUM IN BORROW.RNUM%TYPE)asbegininsertinto BORROW (BNUM,RNUM,BDATE)values(P_BNUM,P_RNUM,TO_CHAR(SYSDATE(),'YY/MM/DD'));commit;end;4、建立与借书存储过程相对应的触发器,当借阅表中加入借阅信息时,该触发器触发,自动修改所借图书的是否借出改为‘是’。

数据库,触发器实验报告

数据库,触发器实验报告

数据库,触发器实验报告数据库系统实验报告触发器实验4 触发器1、通过序列和触发器实现借阅表中借阅流水号字段的自动递增。

Create or replace sequence bwnum_idMinvalue 1Maxvalue 1.0E28Start with 1Increment by 1Cache 20;Create or Replace Triggertri_bwnum_idBefore Insert On borrowFor Each RowBeginSelect bwnum_id.NextvalInto :new.bwnumFrom DUAL;End;2、通过序列和触发器实现预约表中预约流水号字段的自动递增Create sequence pnum_idMinvalue 1Maxvalue 1.0E28Start with 1Increment by 1Cache 20;Create or Replace Triggertri_pnum_idBefore Insert On preborrowFor Each RowBeginSelect pnum_id.NextvalInto :new.pnumFrom DUAL;End;3、修改实验三借书功能的存储过程。

该存储过程要求:(1)借书时输入借书证号,图书编号。

(即该函数有2个输入参数)(2)借书时,借书日期为系统时间。

*该存储过程主体部分只有insert into语句。

create or replace Procedurep_borrow(P_BNUM IN BORROW.BNUM%TYPE,P_RNUM IN BORROW.RNUM%TYPE)asbegininsertinto BORROW (BNUM,RNUM,BDATE)values(P_BNUM,P_RNUM,TO_CHAR( SYSDATE(),&#39;YY/MM/DD&#39;));commit;end;4、建立与借书存储过程相对应的触发器,当借阅表中加入借阅信息时,该触发器触发,自动修改所借图书的是否借出改为‘是’。

数据库触发器的创建和使用总结

数据库触发器的创建和使用总结

数据库触发器的创建和使用总结数据库触发器是一种在数据库管理系统中使用的特殊对象,它可以在特定的数据库操作发生时自动执行一系列的操作。

触发器可以用于实现数据的完整性约束、应用业务规则、监控数据库操作等功能。

创建数据库触发器需要以下几个步骤:1. 定义触发器的类型:触发器可以在 INSERT、UPDATE 或 DELETE 操作发生前或发生后执行操作。

根据需要选择合适的类型。

2. 指定触发器的事件:选择触发器对应的数据库表,并指定触发器所监控的事件,如 INSERT、UPDATE 或 DELETE。

3. 编写触发器的触发条件:定义触发器执行的条件,可以使用 SQL 表达式或逻辑判断语句来指定触发条件。

4. 编写触发器的操作:定义触发器触发后要执行的操作,可以是单个 SQL 语句或多个 SQL 语句的组合。

5. 创建触发器:使用数据库管理系统提供的 CREATE TRIGGER 语句来创建触发器。

使用数据库触发器可以实现以下功能:1. 强制实施数据完整性约束:通过在 INSERT、UPDATE 或 DELETE 操作前执行触发器,可以对数据进行验证和修正,确保数据的完整性和一致性。

2. 应用业务规则:触发器可以根据特定的业务规则执行相关操作,如在插入新记录时自动生成一个唯一标识符。

3. 监控和审计数据库操作:通过触发器,可以记录数据库操作的详细信息,包括操作时间、操作用户等,以便进行监控和审计。

4. 实现数据复制和同步:触发器可以用于实现数据的复制和同步,当一个表的数据发生变化时,触发器可以自动将变化应用到其他表。

然而,使用触发器也需要注意一些问题:1. 触发器的执行效率:触发器会在数据库操作发生时自动执行,如果触发器的操作较为复杂,可能会对数据库的性能产生影响。

2. 触发器的递归执行:触发器的执行可能会引起其他触发器的执行,如果触发器之间存在递归调用,可能会导致死循环。

3. 触发器的管理和维护:数据库中存在大量的触发器时,触发器的管理和维护可能会变得复杂,需要注意触发器的命名和组织结构。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

或UPDATE语句时,指定的数据行从基本表中删除,然后被转移到了deleted表中。

在基本表和deleted表中一般不会存在相同的数据行。

▪一个UPDATE操作实际上是由一个DELETE操作和一个INSERT操作组成的。

在执行UPDATE操作时,旧的数据行从基本表中转移到deleted表中,然后将新的数据行同时插入基本表和inserted表中。

实验主要任务:
导入学生成绩数据库,并建立相关表的关系,对数据库实施如下操作:
一、利用SQL Server管理控制台创建DML触发器中的INSERT触发器的后(AFTER)触发器
1. 利用SQL-SERVER管理控制台:创建一个INSERT触发器“TR_Course_Insert”,当在课程表中插入一条新记录时,触发该触发器,并给出“你插入了一条新的课程记录!”的提示信息。

2.创建了TR_Course_Insert触发器后,查看向课程表中插入数据时,此触发器所完成的功能。

二、使用Transact-SQL语句创建DML的后(FOR、AFTER)触发器
(一)实现检查约束
3. 创建一个AFTER触发器,要求实现以下功能:在成绩表上创建一个插入、更新类型的触发器TR_ScoreCheck,当在成绩字段中插入或修改考试分数后,触发该触发器,检查分数是否在0-100之间。

create trigger TR_ScoreCheck
on成绩
for insert,update
as
if(select成绩from inserted)between 0 and 100
begin
print'你成功的对成绩表插入(更新)了一条记录'
end
else
begin
print'(插入)更新的成绩数据错误'
rollback transaction
end
在创建了TR_ScoreCheck触发器之后,在查询窗口中输入以下SQL语句验证:
(独立完成:4.创建一个AFTER触发器,要求实现以下功能:在2003学生名单表上创建一个插入、更新类型的触发器TR_Sex_Check,当在性别字段中插入或修改性别后,触发该触发器,检查性别是否是‘男’或‘女’,并验证)
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER trigger [TR_Sex_Check]
on [dbo].[学生名单]
for insert,update
as
if(select性别from inserted)in('男','女')
begin
print'插入(更新)数据'
end
else
begin
print'插入或更新的性别错误'
rollback transaction
end
(二)实现层叠修改
5.创建一个AFTER触发器,要求如下:在学生表上创建一个删除类型的触发器TR_Stu_Delete,当在学生表中删除某一条记录后,触发该触发器,在成绩表中删除与此学号对应的记录。

create trigger TR_Stu_Delete
on学生
for delete
as
begin
delete
from成绩
where学号=(select学号from deleted)
end
在创建了TR_Stu_Delete触发器之后,在查询窗口中输入以下SQL语句验证:
(独立完成:6.创建一个AFTER触发器,要求实现以下功能在2003班级表上创建一个删除类型的触发器TR_Class_Delete,当在2003班级表中删除某一条记录后,触发该触发器,在2003学生名单中删除与此学号对应的记录。

并验证)
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER trigger [TR_Class_Delete]
on [dbo].[班级]
for delete
as
begin
delete
from学生名单
where班级=(select班级from deleted)
end
三、使用Transact-SQL语句创建DML的前(INSTEAD OF)触发器
7.创建一个INSTEAD OF触发器,要求实现以下功能:在课程表上创建一个删除类型的触发器TR_NotAllowDelete,当在课程表中删除记录时,触发该触发器,显示不允许删除表中数据的提示信息。

在创建了TR_Stu_Delete触发器之后,在查询窗口中输入以下SQL语句验证:
四、查看和修改触发器
(一)利用SQL Server管理控制平台查看
8.使用SQL Server管理控制台查看TR_Course_Insert触发器并查看与该触发器有依赖关
系的其他数据库对象
(二)使用系统存储过程查看触发器
可以使用系统存储过程sp_help、sp_helptext和sp_depends分别查看触发器的不同信息。

它们的具体用途和语法形式如下:
sp_help:用于查看触发器的一般信息,如触发器的名称、属性、类型和创建时间。

sp_help ‘触发器名称’
sp_helptext:用于查看触发器的正文信息。

sp_depends:用于查看触发器涉及到的所有表。

9.使用系统存储过程查看TR_Course_Insert触发器的一般信息
10.使用系统存储过程查看TR_Stu_Delete触发器涉及到的所有表。

11.使用系统存储过程查看TR_Stu_Delete触发器的正文信息
五、删除触发器
12.用系统命令DROP TRIGGER 触发器名删除TR_Course_Inser
利用商品销售练习数据库阅读下面的插入存储器、触发器实例,并把代码敲入自己的界面上熟悉:
数据库【商品销售练习】关系图
1.报告格式和内容要求:
a. 内容和格式整齐。

大标题采用黑体四号字加粗,小标题采用小四号字加粗。


文采用五号宋体,单倍行距。

b. 贴图时请剪裁到适当大小,要保证打印时可以看清,但也不要太大以免“越界”。

c. 不要在报告中写与实验无关的话,内容要有条理、完整、并能突出重点,要将
遇到的主要问题说明。

2.文件格式要求:
a. 将实验成果放入一个文件夹中,文件夹的内容包括:本实验报告、分离后的数
据库、如有查询代码(.sql文件)和其它文件也一并放入。

b. 文件夹以“学号姓名班级_S11”为文件名。

注意:你的学号放在姓名前。

c. 注意:所有文件保存后关闭,然后打包成RAR文件,以免提交的内容丢失或打
不开。

3.提交方式和时间:一周内完成。

可以将文件包发到我邮箱dah1225126.。

4.主动查阅资料,坚持自己亲手完成实验,弄清每个步骤和相关原理。

相关文档
最新文档