欢迎来到山村网

浅谈MySQL中的触发器

2019-03-02 12:23:57浏览:956 来源:山村网   
核心摘要:  这篇文章主要介绍了MySQL中的触发器,包括使用触发器添加、更新、删除用户等操作,需要的朋友可以参考下  在很多时候,干得

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

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

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

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

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

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

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

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

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

  触发器添加用户

  ?

1 2 3 4 5 6 7 8 9 10 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 ;

  触发器更新用户

  ?

1 2 3 4 5 6 7 8 9 10 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 ;

  触发器删除用户

  ?

1 2 3 4 5 6 7 8 9 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小白!

(责任编辑:豆豆)
下一篇:

python实现自动更换ip的方法

上一篇:

python实现的简单窗口倒计时界面实例

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com