• ADADADADAD

    8Python全栈之路系列之MySQL触发器[ mysql数据库 ]

    mysql数据库 时间:2024-12-24 19:13:25

    作者:文/会员上传

    简介:

    Python全栈之路系列之MySQL触发器l对某个表进行增/删/改操作的前后如果希望触发某个特定的行为时,可以使用触发器,触发器用于定制用户对表的行进行增/删/改前后的行为。创建触

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

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

    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全栈之路

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

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: 用户触发器列之