数据库系统实验报告-触发器及其应用
数学与计算机学院 数据库系统 实验报告 年级 05级 学号 2005430046 姓名 高原原 成绩 专业 计算机科学与技术 实验地点 主楼402 指导教师 张寿华 实验项目 触发器及其应用 实验日期 11月10日 一、 实验目的:
通过实验使学生加深对数据库完整性的理解,学会创建和使用触发器。
二、 实验原理:
1(INSERT触发器的工作原理
在向
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
中插入数据的时候,INSERT触发器自动执行,新增加的记录增加到触发器表中和inserted表中。
inserted表是五个逻辑表~保存所插入数据记录的拷贝。
触发器通过检查inserted表来确定触发器是否应该执行以及如何执行,在inserted表中记录的数据总是触发器表中一行或者多行记录的冗余数据。
事务日志用来记录用户对数据库的操作和对数据的修改操作,但是事务日志中的文本信息是不可读的。不过,inserted表允许参考INSERT语句引起的记录在事务日志中的修改,然后,把修改和插入的数据进行比较以去执行相应的操作。
2(DELETE触发器的工作原理
当在表中删除记录的时候,DELETE触发器自动执行,被删除的记录存放在deleted表中。 deleted表是一个逻辑表~用来保存从表中删除的记录。
在使用DELETE触发器的时候,应该考虑以下因素:
deleted逻辑表总是放在内存中以提高性能。
在DELETE触发器中,不能包括TRUNCATE TABLE语句。
在数据库表和deleted表中没有相同的记录,当在数据库中删除相应的记录后,这些记录便存储在delelted表中。
下面的例子创建了一个DELETE触发器,当新的书到后,在sale表中删除一条记录,这时,触发器修改result表的sale_out列。
USE library
GO
CREATE TRIGGER sale_delete
AS
UPDATE c SET sale_out=‘N’
FROM result c INNER JOIN deleted i ON c.isbn=d.isbn AND c.copyID=d.copyID 3(UPDATE触发器工作原理
当修改表中的一条记录时,UPDATE触发器就会自动执行。执行一条UPDATE语句相当于执行一条DELETE语句和一条INSERT语句,当修改了表中的一个记录之后,表中原来的记录移动到deleted表中,修改后的记录存储到inserted表中。触发器通过检查deleted表和inserted表和被修改的表来确定是否修改了行内容以及如何执行触发器操作。
三、 实验要求:
(1) 触发器的创建与执行。
(2) 学会使用触发器。
(3) 了解触发器与约束的比较。
四、 实验结果(程序)及
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
:
(1) 触发器的创建语法形式:
CREATE TRIGGER trigger_name
ON{table|view}
[WITHENCRYPTION]
{
{ { FOR | AFTER | INSTEAD OF } { [DELETE][,][ INSERT ] [ , ] [ UPDATE ] }
[WITHAPPEND]
[NOTFORREPLICATION]
AS
[{IFUPDATE(column)
[{AND|OR}UPDATE(column)]
[...n]
|IF(COLUMNS_UPDATED(){bitwise_operator}updated_bitmask)
{comparison_operator}column_bitmask[...n]
}]
sql_statement[...n]
}
}
(2) 修改触发器:
使用alter trigger命令修改触发器
alter trigger命令的语法形式如下:
ALTERTRIGGERtrigger_name
ON(table|view)
[WITHENCRYPTION]
{
{ ( FOR | AFTER | INSTEAD OF ) { [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] }
[NOTFORREPLICATION]
AS
sql_statement[...n]}
|
{(FOR|AFTER|INSTEADOF){[INSERT][,]UPDATE}}
[NOTFORREPLICATION]
AS
{IFUPDATE(column)
[{AND|OR}UPDATE(column)]
[...n]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{comparison_operator}column_bitmask[...n]
}
sql_statement[...n]
}
}
(3) 删除触发器:
使用系统命令DROP TRIGGER删除指定的触发器,其语法形式如下:
DROP TRIGGER { trigger } [ ,...n ] (5)触发器的应用:
1. 使用INSERT触发器
INSERT触发器通常被用来更新时间标记字段,或者验证被触发器监控的字段中的数据满足要求的
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
,以确保数据完整性。
2. 使用UPDATE触发器
修改触发器和插入触发器的工作过程基本上一致,修改一条记录等于插入了一条新的记录并且删除一条旧的记录。
3. 使用DELETE触发器
DELETE触发器通常用于两种情况,第一种情况是为了防止那些确实需要删除但会引起数据一致性问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
的记录的删除。
第二种情况是执行可删除主记录的子记录的级联删除操作。可以使用这样的触发器从主销售记录中删除所有的定单项。
4. 使用嵌套的触发器
如果一个触发器在执行操作时引发了另一个触发器,而这个触发器又接着引发下一个触发器……这些触发器就是嵌套触发器。触发器可嵌套至 32 层,并且可以控制是否可以通过"嵌套触发器"服务器配置选项进行触发器嵌套。如果允许使用嵌套触发器,且链中的一个触发器开始一个无限循环,则超出嵌套级,而且触发器将终止。在执行过程中,如果一个触发器修改某个表,而这个表已经有其它触发器,这是就要使用嵌套触发器。