MySQL数据库的触发器的使用
作者:阿柠xn??????? 发布时间:2024-01-19 07:17:37
使用触发器
触发器
发生什么事情之后或之前,会自动执行某条语句,这就是触发器
创建触发器
创建触发器要给出的4条关键信息:
1.唯一的触发器名
2.触发器关联的表
3.触发器应该响应的活动(DELETE,INSERT or UPDATE)
4.触发器何时执行(处理之前or之后)
CREATE TRIGGER语句创建触发器
CREATE TRIGGER newproduct AFTER INSERT ON products
FOR EACH ROW
SELECT 'Product added';
FOR EACH ROW 代码对每个插入行执行。
删除触发器
DROP TRIGGER newproduct;
使用触发器
INSERT触发器
INSERT触发器在INSERT语句执行之前或之后执行。需要知道一下几点:
在INSERT触发器的代码内,可引用一个名为NEW 的虚拟表,访问 * 入的行。
在BEFORE INSERT触发器中,NEW中 的值也可以被更新(允许更改 * 入的值)
对于AUTO_INCREMENT列,NEW 在INSERT执行之前包含0,在INSERT执行之后包含新的自动生成值。
CREATE TEIGGER neworder ?AFTER INSERT ON orders
FOR EACH ROW SELECT NEW.order_num;
这个触发器讲了咋个事情呢?你不要觉得云里雾里的,我们知道这个INSERT是不会显示什么信息出来的,所以我们加一个 AFTER INSERT
就是你只要一插入,我们就读出来这个订单号显示出来。就是这么一个功能,你不要想的太复杂了。所以你只能AFTER昂,BEFORE你能读出来个啥。
DELETE触发器
你也需要知道几点:
在DELETE触发器的代码中,你可以引用一个名为OLD的虚拟表,访问被删除的行。
OLD中的值全都是只读,不能更新。
例:演示使用OLD保存将要删除的行到一个存档表中。
CREATE TRIGGER deleteorder BEFORE DELETE ON oreders
FOR EACH ROW
BEGIN
INSERT INTO archive_orders(order_num,order_date,cust_id)
VALUES(OLD.order_num,OLD.order_date,OLD.cust_id);
END;
UPDATE触发器
注意几点:
在UPDATE触发器代码中,你可以引用一个OLD的虚拟表访问以前的值,引用一个名为NEW的虚拟表访问更新的值。
在BEFORE UPDATE触发器中,NEW中的值可能也被更新
OLD中的全是只读的。
例:保证州名缩写总是大写
CREATE TRIGGER updatevendor BEFORE UPDATE ON vendors
FOR EACH ROW SET NEW.vend_state = Upper(New.vend_state);
??这个例子我想说一下,它这个的话就意味着我们对这个NEW的改变是会影响到实际表中的。这点应该注意到。
触发器的进一步介绍
MySQL触发器是不支持CALL语句的,这是十分遗憾的,所需的存储过程的代码需要复制到触发器内。
来源:https://juejin.cn/post/7139696060045197342
猜你喜欢
- 目录实现加权轮询负载均衡思路加权轮询负载均衡代码测试代码实现加权轮询负载均衡思路代码实现一个加权负载均衡Weight
- 安装Python环境ANACONDA是一个Python的发行版本,包含了400多个Python最常用的库,其中就包括了数据分析中需要经常使用
- /// <summary> /// 获得目标
- 代码如下,保存到HTML文件也可以查看效果:<html><head><meta charset="u
- 如何在双python下设置python3为默认在C:\Program下举例第一步安装好python2和python3后设置好环境变量第二步去
- python是一款简单易用的编程语言,特别是其第三方库,能够方便我们快速进入工作,但其第三方库的安装困扰很多人.现在安装python时,已经
- 一、浪漫玫瑰花实现代码:from turtle import *import timesetup(1000,800,0,0)speed(0)
- 在来回切换中英文输入法的时候连按两下shift总是会蹦出来全局搜索框真的很是麻烦,现在是把这个框给禁用掉1.按ctrl+shift+a,弹出
- python的ImageTk.PhotoImage大坑如果大家遇到这样的报错:Exception in Tkinter callbackTr
- 1、PHP中的抽象类PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么
- python中有很多字符串连接方式,今天在写代码,顺便总结一下:最原始的字符串连接方式:str1 + str2python 新字符串连接语法
- jQuery.sheet 是一个用于创建 Web 电子表格的 jQuery插件,其功能及界面风格和微软的 Excel 非常相似,使得用户不至
- python中的数字类型工具python中为更高级的工作提供很多高级数字编程支持和对象,其中数字类型的完整工具包括:1.整数与浮点型,2.复
- 如下所示:try: f =open("D:/1.txt",'r') f.clos
- 词云图什么是词云图,相信大家肯定不会感到陌生,一本书统计里面出现的词频,然后可视化展示,让读者快速的了解这个主题纲要,这就是词云的直接效果。
- 实际中,很多数据都是存为txt文件、csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的。本文简单介绍读入txt文件以及将之转
- 页面大小、窗口大小和滚动条位置这三个数值在不同的浏览器例如Firefox和IE中有着不同的实现。即使在同一种浏览器例如IE中,不同版本也有不
- map()函数map() 会根据提供的函数对指定序列做映射,是内置函数第一个参数 function 以参数序列中的每一个元素调用 funct
- 一般采用的方法:self.window = Qdialog() # 实例化self.window.show() # 显示界面用这种方法只能打
- 合并与分割tf.concattf.concat可以帮助我们实现拼接操作.格式:tf.concat( values,