`
txf2004
  • 浏览: 6875888 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

创建INSERT、DELETE、UPDATE 触发器示例

 
阅读更多

触发器是基于一个表创建的,但是可以针对多个表进行操作。所以触发器可以用来对表实施复杂的完整性的约束,当触发器所保存的数据发生改变时,触发器所保存的数据发生改变时,触发器被自动激活,从而防止对数据的不正确修改。

下面对每个INSERT、DELETE、UPDATE触发器举一个小例子来加深理解:

INSERT触发器:

INSERT触发器就是当对定义触发器的表执行INSERT语句时,就会调用的触发器,INSERT触发器可以用来修改,甚至拒绝接受正插入的记录。

建立一个学生信息管理的数据库,并且建立两个表,如下图所示:


ClassInfo表如下:


StudentInfo表如下:


新建查询,输入如下的代码:


create trigger T_addStudent
on StudentInfo
for insert
as 
  update ClassInfo set totalNum=totalNum+1
  where ClassNo = (select StuClass from inserted)

上面这段代码就是建立了一个插入触发器


如上图所示

1、 写明触发器的名称

2、 该触发器是在那个表改变的时候发生

3、 当这个表进行什么操作的时候发生

4、 发生上述操作之后还要进行怎样的操作。

这段代码的意思是:当在studentInfo表中添加一条记录的时候,就要更新ClassInfo中的TotalNum这一列,这一列的数据要增加1

下面我们验证一下:

输入下面的代码:

select totalNum from ClassInfo where ClassNo ='002'
insert into StudentInfo values('小明','003','002','男')
select totalNum from ClassInfo where ClassNo ='002'

执行之后将出现下面的结果:



所以当我们想student表中插入一条记录的时候,Class表中的某一列就会加1.

DELETE触发器:

当数据库运行DELETE语句时,就会激活DELETE触发器,DELETE触发器用于约束用户能够从数据库中删除的数据,因为这些数据中,有些数据是不希望用户轻易删除的。

接下来,我们再建立一个表,并且输入一些数据,如下图所示:




新建查询,输入如下的代码:

create Trigger T_DELETETEACHERon TeacherInfoFor deleteas select TeacherName as 教师姓名,Sex, Age from deleted

输入下面的语句

delete from TeacherInfo where TeacherId = '001'


执行结果如图所示:



他会将我们刚刚删除的语句显示出来。

UPDATE 触发器:

当一个UPDATE语句在目标表上运行的时候,就会调用UPDATE触发器,这种类型的触发器专门用于约束用户能修改的现有的数据。

继续用上面的教师信息表,输入下面的代码


create trigger t_Update
on TeacherInfo 
for update 
as 
if (update(TeacherName)or update(sex))
begin 
	print'事物不能被处理,基本数据不能修改!'
	rollback transaction
end 
else 
	print'数据修改成功!'


接着我们更改一下第二条教师的信息

输入下面的代码:

Update TeacherInfo setTeacherName=’仙儿’ where TeacherID = ‘002’

将弹出下面的消息框:



分享到:
评论

相关推荐

    mysql 触发器创建与使用方法示例

    当insert delete update设置触发器之后,执行insert delete update操作就会自动触发设置的内容。 一张表最大能有6个触发器(3*2,三种操作*两种时间(before|after))。 创建触发器  语法: create trigger 触发器名...

    sqlserver触发器例子

    -- update触发器 --select top 0 type,title,content,getdate() as post_time,1 as flag into info_details_index from info_details; create trigger tri_infoDetails_u on info_details after update as ...

    Oracle中触发器示例详解

    ORACLE事件指的是对数据库的表进行的INSERT、UPDATE及DELETE操作或对视图进行类似的操作。ORACLE将触发器的功能扩展到了触发ORACLE,如数据库的启动与关闭等。所以触发器常用来完成由数据库的完整性约束难以完成的...

    实验六-触发器实验报告.doc

    SQL DML 语句 ( INSERT、 DELETE 或 UPDATE) AFTER 指定了触发器在处理完成后触发 BEFORE 指定了触发器在处理完成前触发 默认情况下,触发器每个表触发一次 FOR EACH ROW 选项指定触发器每行触发一次(即触发器为...

    MySQL触发器简单用法示例

    mysql触发器和存储过程一样,是嵌入到mysql的一段程序,触发器是由事件来触发的,这些事件包括,INSERT,UPDATE,DELETE,不包括SELECT 创建触发器 CREATE TRIGGER name,time,event ON table_name FOR EACH ROW ...

    mysql触发器实现oracle物化视图示例代码

    下面实验创建ON COMMIT 的FAST刷新模式,在mysql中用触发器实现insert , update , delete 刷新操作 1、基础表创建,Orders 表为基表,Order_mv为物化视图表 代码如下: mysql> create table Orders( -> order_id int...

    设置SQLServer数据库中某些表为只读的多种方法分享

    Insert,Update,Delete 触发器 2. Check 约束 和 Delete 触发器 3. 设置数据库为只读 4. 把表放到只读文件组中 5. 拒绝对象级别权限 6. 创建视图 在开始之前,先创建一个数据库及表作为示例: 代码如下: create ...

    oracle实验报告

    (6)在一个单独的表上,最多只能创建三个触发器与之关联,一个INSERT触发器,一个DELETE触发器和一个UPDATE触发器。 1. 实例讲解Oracle数据库自带的几个触发器 Oracle数据库自带的几个触发器(最简单触发器格式)...

    SQL学习教程-基本SQL语言

    这一部分里面主要是SELECT,DELETE,INSERT,UPDATE语句的详细应用示例,里面注释我都写好的。 因为是自己写在笔记本上的,所以解压后的文件夹里都是我拍的笔记的图片。没有做成文档形式,是担心图片不能放大。...

    精通sql结构化查询语句

    23.5.3 创建系统运行的表 23.5.4 创建留言显示模块 23.5.5 创建留言添加模块 23.5.6 进入留言管理模块 23.5.7 创建留言修改模块 23.5.8 创建留言删除模块 23.6 小结 5.2.2 创建非簇索引 5.2.3 创建簇索引 5.2.4 创建...

    mysql-notification:MySQL中用户定义函数(UDF)的示例

    该项目包含一个mysql插件,该插件设置一个服务器套接字,该套接字接收来自触发器的消息,该触发器连接到数据库中特定表上的INSERT,UPDATE,DELETE操作。 然后,服务器将向nodejs服务器发送一条消息,然后该节点将...

    AirlineDatabase:带有SQLServer的航空公司数据库

    写下以下SQL语句: 为您选择的5个表编写示例INSERT,DELETE和UPDATE语句。 b。 为已实现的数据库编写10条SELECT语句。 一世。 其中3个应至少使用2个表。 ii。 其中4个应至少使用3个表。 iii。 其中3个应至少使用4个...

    MySQL5 权威指南第3版中文版_part1

     9.8 修改数据(INSERT、UPDATE和DELETE)  9.9 创建数据表、数据库和索引  第10章 SQL解决方案  10.1 字符串  10.2 日期和时间  10.3 ENUM和SET数据类型  10.4 变量与条件表达式(IF、CASE)  10.5 在数据...

    21天学会SQL

    2.3.2 安装示例数据库 39 2.4 认识SQL Server Management Studio (企业管理器) 40 2.4.1 访问SQL Server Management Studio 40 2.4.2 SQL Server Management Studio 菜单简介 42 2.4.3 查询编辑器窗口 43 2.4.4 ...

    Oracle11g从入门到精通

    4.6.2 创建触发器 4.6.3 执行触发器 4.6.4 删除触发器 第5章 熟悉SQL*Plus-Oracle数据库环境 5.1 进入和退出SQL*Plus环境 5.1.1 启动SQL*Plus 5.1.2 创建SQL*Plus快捷方式 5.1.3 退出SQL*Plus环境 5.2 SQL*...

    Oracle11g从入门到精通2

    4.6.2 创建触发器 4.6.3 执行触发器 4.6.4 删除触发器 第5章 熟悉SQL*Plus-Oracle数据库环境 5.1 进入和退出SQL*Plus环境 5.1.1 启动SQL*Plus 5.1.2 创建SQL*Plus快捷方式 5.1.3 退出SQL*Plus环境 ...

    mysql数据库的基本操作语法

    每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别上创建。MySQL的主键名总是PRIMARY, 当创建主键约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。 列模式: create table temp...

    数据库基础

    §6.4 insert、delete及update 的提交和撤消 176 §6.4.1 自动提交的设置 176 §6.4.2 保留点和撤消 177 第七章 复杂查询语句的使用 180 §7.1 复杂查询语句的使用 180 §7.1.1 相关子查询 180 §7.1.2 外连接 180 ...

    MySQL 5权威指南(第3版) 中文版 下载地址

     9.8 修改数据(INSERT、UPDATE和DELETE)  9.9 创建数据表、数据库和索引  第10章 SQL解决方案  10.1 字符串  10.2 日期和时间  10.3 ENUM和SET数据类型  10.4 变量与条件表达式(IF、CASE)  10.5 ...

Global site tag (gtag.js) - Google Analytics