12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
mysql数据库 时间:2024-12-24 19:13:25
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
Python全栈之路系列之MySQL触发器l对某个表进行增/删/改操作的前后如果希望触发某个特定的行为时,可以使用触发器,触发器用于定制用户对表的行进行增/删/改前后的行为。创建触
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
l
对某个表进行增/删/改
操作的前后如果希望触发某个特定的行为时,可以使用触发器,触发器用于定制用户对表的行进行增/删/改
前后的行为。
插入前
CREATETRIGGERtri_before_insert_tb1BEFOREINSERTONtb1FOREACHROWBEGIN...END
插入后
CREATETRIGGERtri_after_insert_tb1AFTERINSERTONtb1FOREACHROWBEGIN...END
删除前
CREATETRIGGERtri_before_delete_tb1BEFOREDELETEONtb1FOREACHROWBEGIN...END
删除后
CREATETRIGGERtri_after_delete_tb1AFTERDELETEONtb1FOREACHROWBEGIN...END
更新前
CREATETRIGGERtri_before_update_tb1BEFOREUPDATEONtb1FOREACHROWBEGIN...END
更新后
CREATETRIGGERtri_after_update_tb1AFTERUPDATEONtb1FOREACHROWBEGIN...END
创建一个user_info
表和user_info_back
表,里面有UID
,Name
,Password
,E-mil
列;
CREATETABLE`user_info`(`UID`int(5)NOTNULLAUTO_INCREMENT,`Name`char(15)NOTNULL,`Password`varchar(32)DEFAULTNULL,`Email`varchar(255)DEFAULTNULL,PRIMARYKEY(`UID`,`Name`))ENGINE=InnoDBDEFAULTCHARSET=utf8;
CREATETABLE`user_info_back`(`UID`int(5)NOTNULLAUTO_INCREMENT,`Name`char(15)NOTNULL,`Password`varchar(32)DEFAULTNULL,`Email`varchar(255)DEFAULTNULL,PRIMARYKEY(`UID`,`Name`))ENGINE=InnoDBDEFAULTCHARSET=utf8;
触发器的作用就是在往user_info
表中插入数据之前进入tri_before_insert_tb1
触发器,执行里面的操作
delimiter%CREATETRIGGERtri_before_insert_tb1BEFOREINSERTONuser_infoFOREACHROWBEGIN--如果插入时的Name="as"IFNEW.Name="ansheng"THEN--那么就把这条数据先插入user_info_back表中,数据相同INSERTINTOuser_info_back(Name,Password,Email)VALUES(NEW.Name,NEW.Password,NEW.Email);ENDIF;END%delimiter;
触发器无法由用户直接调用,而知由于对表的增/删/改
操作被动引发的。
往user_info
表中插入两条数据
INSERTINTOuser_info(Name,Password,Email)VALUES("ansheng","ansheng","ansheng@ansheng.me"),("root","r","root@ansheng.me");
查看表中的数据
mysql>select*fromuser_info;+-----+---------+----------+--------------------+|UID|Name|Password|Email|+-----+---------+----------+--------------------+|1|ansheng|ansheng|ansheng@ansheng.me||2|root|r|root@ansheng.me|+-----+---------+----------+--------------------+2rowsinset(0.00sec)mysql>select*fromuser_info_back;+-----+---------+----------+--------------------+|UID|Name|Password|Email|+-----+---------+----------+--------------------+|1|ansheng|ansheng|ansheng@ansheng.me|+-----+---------+----------+--------------------+1rowinset(0.00sec)
DROPTRIGGERtri_after_insert_tb1;
NEW
表示即将插入的数据行,OLD
表示即将删除的数据行,对于INSERT语句,只有NEW是合法的,对于DELETE语句,只有OLD才合法,而UPDATE语句可以在和NEW以及OLD同时使用
#Python全栈之路
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19