我的编程空间,编程开发者的网络收藏夹
学习永远不晚

8Python全栈之路系列之MySQL触发器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

8Python全栈之路系列之MySQL触发器

Python全栈之路系列之MySQL触发器

l

对某个表进行增/删/改操作的前后如果希望触发某个特定的行为时,可以使用触发器,触发器用于定制用户对表的行进行增/删/改前后的行为。


创建触发器基本语法

插入前

CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW
BEGIN
    ...
END

插入后

CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW
BEGIN
    ...
END

删除前

CREATE TRIGGER tri_before_delete_tb1 BEFORE DELETE ON tb1 FOR EACH ROW
BEGIN
    ...
END

删除后

CREATE TRIGGER tri_after_delete_tb1 AFTER DELETE ON tb1 FOR EACH ROW
BEGIN
    ...
END

更新前

CREATE TRIGGER tri_before_update_tb1 BEFORE UPDATE ON tb1 FOR EACH ROW
BEGIN
    ...
END

更新后

CREATE TRIGGER tri_after_update_tb1 AFTER UPDATE ON tb1 FOR EACH ROW
BEGIN
    ...
END

触发器实例

创建一个user_info表和user_info_back表,里面有UID,Name,Password,E-mil列;

CREATE TABLE `user_info` (
  `UID` int(5) NOT NULL AUTO_INCREMENT,
  `Name` char(15) NOT NULL,
  `Password` varchar(32) DEFAULT NULL,
  `Email` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`UID`,`Name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `user_info_back` (
  `UID` int(5) NOT NULL AUTO_INCREMENT,
  `Name` char(15) NOT NULL,
  `Password` varchar(32) DEFAULT NULL,
  `Email` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`UID`,`Name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建一个插入前的触发器

触发器的作用就是在往user_info表中插入数据之前进入tri_before_insert_tb1触发器,执行里面的操作

delimiter %
CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON user_info FOR EACH ROW
BEGIN
-- 如果插入时的Name="as"
IF NEW.Name = "ansheng" THEN
    -- 那么就把这条数据先插入user_info_back表中,数据相同
    INSERT INTO user_info_back(Name,Password,Email) VALUES(NEW.Name,NEW.Password,NEW.Email);
END IF;
END%
delimiter ;

使用触发器

触发器无法由用户直接调用,而知由于对表的增/删/改操作被动引发的。

user_info表中插入两条数据

INSERT INTO user_info(Name,Password,Email) VALUES("ansheng","ansheng","ansheng@ansheng.me"),("root","r","root@ansheng.me");

查看表中的数据

mysql> select * from user_info;
+-----+---------+----------+--------------------+
| UID | Name    | Password | Email              |
+-----+---------+----------+--------------------+
|   1 | ansheng | ansheng  | ansheng@ansheng.me |
|   2 | root    | r        | root@ansheng.me    |
+-----+---------+----------+--------------------+
2 rows in set (0.00 sec)
mysql> select * from user_info_back;
+-----+---------+----------+--------------------+
| UID | Name    | Password | Email              |
+-----+---------+----------+--------------------+
|   1 | ansheng | ansheng  | ansheng@ansheng.me |
+-----+---------+----------+--------------------+
1 row in set (0.00 sec)

删除触发器

DROP TRIGGER tri_after_insert_tb1;

NEW表示即将插入的数据行,OLD表示即将删除的数据行,对于INSERT语句,只有NEW是合法的,对于DELETE语句,只有OLD才合法,而UPDATE语句可以在和NEW以及OLD同时使用


#Python全栈之路

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

8Python全栈之路系列之MySQL触发器

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

3Python全栈之路系列之MySQL表

先创创建一个表用于测试-- 创建数据库CREATE DATABASE dbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;-- 创建表CREATE TABLE `tb` (  `id` i
2023-01-31

3Python全栈之路系列之Rabbit

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件。RabbitMQ服务器是用Erlang语言编写的,它可以为你的应用提供一个通用的消息发送和接收平台,并且保证消息在传输过程中的安全,RabbitMQ官网,RabbitM
2023-01-31

3Python全栈之路系列之D

模板是一个文本,用于分离文档的表现形式和内容,模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签)。模板通常用于产生HTML,但是Django的模板也能产生任何基于文本格式的文档。如何使用模板系统在Python代码中使
2023-01-31

Python全栈之路系列之Python

The Python interpreter has a number of functions and types built into it that are always available. They are listed here
2023-01-31

3Python全栈之路系列之基于sock

发布时间:2017年3月16日 00:04 浏览(106) 评论(0) 分类:Python前言此处没有前言粘包在实现发送文件功能之前我们先来理解下粘包的问题,下面有两张图,我觉得很清晰的就可以理解到了。正常情况下发送文件第一步: 客户端把获
2023-01-31

Python全栈之路系列之文件操作

Python可以对文件进行查看、创建等功能,可以对文件内容进行添加、修改、删除,且所使用到的函数在Python3.5.x为open,在Python2.7.x同时支持file和open,但是在3.5.x系列移除了file函数。Python文件
2023-01-31

3Python全栈之路系列之字符串数据类

字符串(str)字符串类型是python的序列类型,他的本质就是字符序列,而且python的字符串类型是不可以改变的,你无法将原字符串进行修改,但是可以将字符串的一部分复制到新的字符串中,来达到相同的修改效果。创建字符串类型可以使用单引号或
2023-01-31

Python全栈之路系列之字符串格式化

This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing '%'
2023-01-31

Python全栈之路系列之字符串数据类

字符串(str)字符串类型是python的序列类型,他的本质就是字符序列,而且python的字符串类型是不可以改变的,你无法将原字符串进行修改,但是可以将字符串的一部分复制到新的字符串中,来达到相同的修改效果。创建字符串类型可以使用单引号或
2023-01-31

编程热搜

目录