SQL语言基础:触发器相关知识介绍​

             

 

1、触发器 Trigger介绍

触发器可以实现完整性规则和保证一些复杂业务规则的实施。针对示警或满足特定 条件下自动执行某项任务来说,触发器是十分有用的机制。触发器是由事件1驱动的特殊过程,一旦由某个用户定义,任何用户对该触发器指定的数据新增、删除、修改操作,系统会自动激活相应的触发器,在核心层进行集中的完整性控制。

2、触发器特点

1) 当数据库开发者声明事件发生时,触发器激活,事件可以是对某个特定关系的插入、删除、更新。

2) 触发器被事件激活后,不是立即执行,而是先由触发器测试触发条件,若条件不成立,响应该事件的触发器将不做任何处理。

3) 如果触发器的申明条件满足时,则与该触发器相连的动作由DBMS执行。可以阻止事件、撤销事件。

注意事项:

1)触发器为数据库对象时,创建触发器必须指定名称、在其定义触发器的表、触发器触发时机、触发器做什么事情。触发器不能作用在临时表,但可以引用临时表。

3、触发器分类

行级触发器:对事件影响的每一行(FOR EACH ROW) ,每一元组执行。

语句级触发器:对整个事件只执行一次触发过程(FOR EACH STATEMENT)。是触发器默认方式。

4、创建触发器

触发器定义包括:触发器的触发事件、触发器执行的动作。针对update操作中还可以指定特定的属性或属性组的修改为触发条件。事件的触发还有两个相关时间:before、after。

  • before:触发器是在事件发生之前触发。

  • after:触发器是在事件发生之后触发。

创建触发器语法格式:

create trigger <触发器名称>[{after|before}]
{[delete|update|updateof[列名清单]]}
on 表名
[referencing <临时视图名称>]
[when<触发条件>]
begin
<触发动作>
end [触发器]

参数说明:

  • before:说明DBMS在执行触发语句之前激发触发器。

  • after:说明DBMS在执行触发语句之后激发触发器。

  • delete:delete触发器,每当一个delete语句从表中删除一行时激发触发器。

  • insert:insert,每当一个insert语句从表中插入一行时激发触发器。

  • update:update触发器,每当update语句修改由of子句指定的列值时激发触发器。如果忽略of子句,表示任何列值时,DBMS都将激发触发器。

  • referencing <临时视图名称>:指定临时视图的别名。在触发器运行过程中,系统会生成两个临时视图,分别存放更新值(旧值)、更新后的值(新值)。

  • 行级触发器:默认临时视图名分别是OLD、NEW。

  • 语句触发器:默认临时视图名分别是OLD-TABLE、NEW-TABLE。触发器结束临时视图也会随着销毁。

  • WHEN<触发条件>:指定触发器的触发条件。只有条件满足触发条件时,才会激发触发器。触发条件必须包含临时视图名、不包含查询。

  • 针对示警或满足特定条件下自动执行某项任务来说,触发是非常有用的机制。

5、更改触发器

语法格式:

alter trigger <触发器名> [{after|before}]
{[delete|update|updateof[列名清单]]}
on 表名
[referencing <临时视图名称>]
[when<触发条件>]
begin要执行的SQL语句
end

6、删除触发器

drop trigger <触发器名>[,...n]

说明:n表示可以指定多个触发器的占位符。

7、完整示例

- 需求:当向员工表插入一条记录时,希望mysql自动同时往日志表插入数据
-- 创建触发器(添加)-- 当往员工表插入一条记录时
CREATE TRIGGER tri_empAdd AFTER INSERT ON employee FOR EACH ROW   
INSERT INTO test_log(content) VALUES('员工表插入了一条记录');
-- 当往员工表修改一条记录时
CREATE TRIGGER tri_empUpd AFTER UPDATE ON employee FOR EACH ROW    
INSERT INTO test_log(content) VALUES('员工表修改了一条记录');
-- 当往员工表删除一条记录时
CREATE TRIGGER tri_empDel AFTER DELETE ON employee FOR EACH ROW    
INSERT INTO test_log(content) VALUES('员工表删除了一条记录');   
-- 删除创建触发器 
DROP TRIGGER tri_empAdd;

触发器事件:数据库表行的插入、删除、修改。也就是执行insert、delete、update语句。

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java struts2值栈ognl_Struts2的值栈和OGNL牛逼啊

Struts2的值栈和OGNL牛逼啊一 值栈简介&#xff1a;值栈是对应每个请求对象的一套内存数据的封装&#xff0c;Struts2会给每个请求创建一个新的值栈&#xff0c;值栈能够线程安全的为每个请求提供公共的数据存取服务。二 OGNL介绍&#xff1a;(1)基本数据&#xff1a;OGNL 是对…

还在用 Notepad++吗? 盘点五款更好用的文本编辑器

来自&#xff1a;oschina.net/news/110987/no-notepad-plus-plus | 责编&#xff1a;乐乐正文 Notepad 一直饱受争议&#xff0c;2018年开始然后引发了大家的关注&#xff0c;这里师长作为技术媒体&#xff0c;不方便带啥节奏&#xff0c;具体事件内容请大家自行百度。其实作…

SQL语言:嵌入式SQL知识笔记

1、概念SQL提供了将SQL语句嵌入到某种高级语言中的使用方式&#xff0c;通常采用预编译的方法将SQL语句嵌入高级语言中。采用的方法由DBMS的预处理程序对源程序进行扫码、识别出SQL语句&#xff0c;把它们转换为主语言调用语句&#xff0c;这样可以让主语言编译程序能识别它&am…

Mysql bat脚本编写_第一次编写bat脚本

** 前言 **今天中午在宿舍不想做什么事&#xff0c;于是想到傻怡的电脑太卡了&#xff0c;多方面原因造成的&#xff0c;多软件安装于系统盘、安装了没用的杀毒软件等等&#xff0c;但是对于windows系统来说呢&#xff0c;使用时间长了&#xff0c;会有很多的缓存文件、日志文件…

windows+caffe(三)——求取图片的均值

这个要在图片已经转化成lmdb格式下才能求均值。。。 1.查看caffe根目录下的bin是否存在compute_image_mean.exe&#xff08;用的happey大神的&#xff09; 如果没有存在&#xff0c;你需要打开MainBuilder.sln&#xff0c;右键compute_image_mean-仅用于项目-仅生成compute_ima…

硬盘知识:硬盘中蓝盘、绿盘、黑盘、红盘有什么区别?

今天给大家介绍一下电脑硬盘中蓝盘、绿盘、黑盘、红盘有什么区别&#xff1f;我们平常说的蓝盘、黑盘、红盘、绿盘这些通常指的是西部数据旗下所产的硬盘&#xff0c;通过各自的特点进行了上述的分类。从外观上我们可以通过硬盘上贴的纸的颜色来区分。绿盘&#xff1a;监控盘&a…

java 框架mvc_JAVA框架-MVC模式

MVCMVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑&#xff0c;在数据变化时更新控制器。View(视图) - 视图代表模型包含的数据的可视化。Controller(…

ndk学习6: 使用gdb调试ndk程序一

生成debug版程序 方法一: 使用ndk-build编译时&#xff0c;加上如下参数NDK_DEBUG1&#xff0c;之后生成so文件之外&#xff0c;还会生成gdbobserver,gdb.setup调式文件 方法二: 修改AndroidManifest.xml文件,增加debuggable属性为true <application android:debuggable&quo…

后端:C#操作Mongodb用法笔记

MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。今天主要给大家介绍一下C#编程语言下Mongodb的用法。开发环境为VS2015示例主要包括数据的增删改查、分页查询、文件存储等功能。有需要的朋友可以一起学习一下。…

计算机语言分为三种:机器语言、汇编语言和高级语言

计算机语言有哪几种&#xff1f; 计算机语言分为三种&#xff1a;机器语言、汇编语言和高级语言 1.机器语言 机器语言是用二进制代码表示计算机能直接识别和执行的一种机器指令的集合&#xff0c;它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。 优点&#…

asp php java_ASP\JSP\PHP相比各有什么优缺点?

展开全部ASP、JSP、和PHP的优点e5a48de588b662616964757a686964616f31333366306538和缺点&#xff1a;一、ASP优点:1、无需编译2、易于生成3、独立于浏览器4、面向对象5、与任何ActiveX scripting 语言兼容6、源程序码不会外漏缺点:1、Windows本身的所有问题都会一成不变的也累…

js变量提升_学习笔记:JS中的作用域和预解析

知识总结&#xff1a;谢静贤、汤昊在javascript中作用域是非常重要的&#xff0c;本文将会说明作用域以及我们在工作&#xff0c;以及面试中的一些面试题&#xff0c;如果有不足的地方希望大家可以评论指出来&#xff0c;自己一定会及时的改正错误&#xff0c;避免大家走入一些…

ArcGIS Engine开发之旅09--几何对象和空间参考

1.Geometry Geometry 是 GIS 中使用最为广泛的对象集之一&#xff0c;用户在创建、删除、编辑和进行地理分析的时候&#xff0c;就是处理一个包含几何形体的矢量对象&#xff1b;除了显示要素意外&#xff0c;控件对象选择&#xff0c;要素符号化&#xff0c;标注要素&#xf…

项目管理:软件工程相关知识笔记

1、软件工程概念介绍软件工程是指应用计算机科学、数学、管理科学等原理&#xff0c;以工程化的原则和方法来解决软件问题的工程&#xff0c;其主要目的是提高软件生产率、提高软件质量、降低软件成本。2、软件工程学的组成软件开发技术&#xff1a;软件开发方法学、软件工具、…

android开发java环境_搭建Android开发环境 - Android - mobile - JavaEye论坛

Android的开发现在是如火如荼&#xff0c;逞现在不是很忙了&#xff0c;学习了下&#xff0c;这里记录下了在windows在如何搭建Android开发环境&#xff0c;对自己是个记录&#xff0c;对新入门的兄弟姐妹们可以参考一下&#xff01;(1)安装JDK&#xff0c;省略。(2)下载Androi…

updatebyprimarykeyselective的where条件是全部字段_ArcGIS 字段计算器

使用键盘输入值并不是编辑表中值的唯一方式。在某些情况下&#xff0c;为了设置字段值&#xff0c;可能要对单条记录甚至是所有记录执行数学计算。您可以对所有记录或选中记录执行简单计算和高级计算。此外&#xff0c;还可以在属性表中的字段上计算面积、长度、周长和其他几何…

项目管理基础:软件生命周期概念介绍

1、软件生命周期定义软件产品或软件系统要经历孕育、诞生、成长、成熟、衰亡等阶段称为软件的生命周期。2、软件生命周期阶段组成软件的生命周期由可行性分析与项目开发计划、需求分析、总体设计、详细设计、编码、单元测试、综合测试、维护阶段。2.1 可行性分析与项目开发计划…