浅谈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小白!
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
相关文章
相关视频
专题推荐
-
独孤九贱-php全栈开发教程
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
-
玉女心经-web前端开发教程
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
-
天龙八部-实战开发教程
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论