微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

浅谈MySQL中的触发器

这篇文章主要介绍了MysqL中的触发器,包括使用触发器添加、更新、删除用户等操作,需要的朋友可以参考下

在很多时候,干得利索不如想的明白。方案应该根据场景来设计,不是盲目的依靠经验,当然这也算新经验!

   需求是把公司的几套公共系统做成通过邮箱用户名和密码认证,只需记住一对用户名密码,简单为上,只允许用户在ExtMail的web页面修改密码!在做论坛认证的时候,由于论坛的复杂性,想到了如下的几个方案:

    通过OAuth2.0做认证,或者自己写接口,问题是只听过,没玩过!

    在邮箱修改时,也提交到论坛的数据库。可惜不会ExtMail的Perl代码,且修改代码工作量太大!

    先前已经把线上邮箱用户表同步到内网,可以做数据库复制,可论坛和邮箱的数据库字段有较大出入,还是要改大量代码

    使用触发器更新论坛数据库用户表!

       在仔细考虑过前面三种办法之后,在能力范围内,已经把PHP编写的论坛认证方式修改成适应邮箱的加盐认证方式,并测试了导入邮箱用户名和密码认证。已经修改过论坛数据库字段类型,部分后端代码!最后一步是自动把邮箱数据库用户表变更同步到论坛数据库用户表。

       在讨论数据库复制时,发现还是最后一种触发器的办法可行性最好,通过对论坛用户表的大多数字段设置认值,做到只添加修改其中的账号,密码和邮件三个字段即可完成对论坛用户的操作,下面是根据实际情况编写的MysqL触发器!

       触发器添加用户

use extmail; DELIMITER // create trigger add_bbsuser after insert on extmail.mailBox for each row begin insert into xiuno_bbs.bbs_user(username,password,email) values (new.name,new.password,new.username); end // DELIMITER ;

       触发器更新用户

use extmail; DELIMITER // create trigger update_bbsuser after update on extmail.mailBox for each row begin update xiuno_bbs.bbs_user set username=new.name, password=new.password where email=new.username; end // DELIMITER ;

       触发器删除用户

use extmail; DELIMITER // create trigger delete_bbsuser after delete on extmail.mailBox for each row begin delete from xiuno_bbs.bbs_user where email=old.username; end // DELIMITER ;

       我踩过的坑

       刚开始编写触发器,从网上找来的命令都不能用,完全一筹莫展之际领悟到,触发器和数据库是绑定的,必须先use extmail到要触发的extmail数据库中,才能对这个库的操作做相应的触发,后来就没有问题了!我果然是MysqL小白!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐