8Python全栈之路系列之MySQL触发器
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,Python全栈之路系列之MySQL触发器l对某个表进行增/删/改操作的前后如果希望触发某个特定的行为时,可以使用触发器,触发器用于定制用户对表的行进行增/删/改前后的行为。创建触发器基本语法插入前C
千家信息网最后更新 2025年11月09日8Python全栈之路系列之MySQL触发器
Python全栈之路系列之MySQL触发器
l
对某个表进行增/删/改操作的前后如果希望触发某个特定的行为时,可以使用触发器,触发器用于定制用户对表的行进行增/删/改前后的行为。
创建触发器基本语法
插入前
CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROWBEGIN ...END
插入后
CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROWBEGIN ...END
删除前
CREATE TRIGGER tri_before_delete_tb1 BEFORE DELETE ON tb1 FOR EACH ROWBEGIN ...END
删除后
CREATE TRIGGER tri_after_delete_tb1 AFTER DELETE ON tb1 FOR EACH ROWBEGIN ...END
更新前
CREATE TRIGGER tri_before_update_tb1 BEFORE UPDATE ON tb1 FOR EACH ROWBEGIN ...END
更新后
CREATE TRIGGER tri_after_update_tb1 AFTER UPDATE ON tb1 FOR EACH ROWBEGIN ...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 ROWBEGIN-- 如果插入时的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全栈之路
触发器
数据
语句
之路
合法
只有
用户
行为
更新
相同
作用
同时
实例
就是
语法
面的
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
司法局网络安全周法治宣传
四川专业软件开发大概多少钱
淄博hr管理软件开发公司
温州计算机应用软件开发
酒店管理系统数据库的设计与应用
TTP网络技术缺陷
安装系统注册表数据库损坏
我的世界服务器安全类命令
成都地铁软件开发公司
原神用腾讯服务器
手机查找无法连接服务器原因
艺恩电影数据库划分标准
中行软件开发中心深圳
网络安全法线上答题技巧
舟山软件开发招聘信息
文件服务器上传文件地址
网站添加数据库怎么添加
陕西管理软件开发商
数据库原理及其应用微课版
沈阳网络安全技术提升费用多少
软件开发合同保证条款
工程软件开发费用怎么开票
正规软件开发人员配置
数据库怎么取消锁表
专业回收旧服务器电话
xml数据库用于服务器端
Python连接数据库应用
怪物数据库英文名
有源代码有数据库如何还原站
jsp引入数据库