浅谈MySQL中的触发器


Posted in Python onMay 05, 2015

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

   需求是把公司的几套公共系统做成通过邮箱用户名和密码认证,只需记住一对用户名密码,简单为上,只允许用户在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小白!

Python 相关文章推荐
Python cx_freeze打包工具处理问题思路及解决办法
Feb 13 Python
使用python实现rsa算法代码
Feb 17 Python
Python可变参数用法实例分析
Apr 02 Python
pandas series序列转化为星期几的实例
Apr 11 Python
Python实现去除列表中重复元素的方法小结【4种方法】
Apr 27 Python
python主线程捕获子线程的方法
Jun 17 Python
Python绘制KS曲线的实现方法
Aug 13 Python
使用Python实现微信提醒备忘录功能
Dec 04 Python
python正则过滤字母、中文、数字及特殊字符方法详解
Feb 11 Python
什么是python的列表推导式
May 26 Python
Python可视化工具如何实现动态图表
Oct 23 Python
python实现学生信息管理系统(精简版)
Nov 27 Python
python去除所有html标签的方法
May 05 #Python
python实现将汉字转换成汉语拼音的库
May 05 #Python
python基于Tkinter库实现简单文本编辑器实例
May 05 #Python
python实现的简单窗口倒计时界面实例
May 05 #Python
给Python中的MySQLdb模块添加超时功能的教程
May 05 #Python
用Python实现一个简单的多线程TCP服务器的教程
May 05 #Python
简单介绍Python中的try和finally和with方法
May 05 #Python
You might like
PHP OPCode缓存 APC详细介绍
2010/10/12 PHP
PHP判断远程url是否有效的几种方法小结
2011/10/08 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
js chrome浏览器判断代码
2010/03/28 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
微信小程序分页加载的实例代码
2017/07/11 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
[01:20:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第四场 8.26
2018/08/30 DOTA
python解析中国天气网的天气数据
2014/03/21 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
python实现的生成word文档功能示例
2019/08/23 Python
python利用tkinter实现图片格式转换的示例
2020/09/28 Python
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
饭店工作计划书
2014/01/10 职场文书
触电现场处置方案
2014/05/14 职场文书
上课睡觉检讨书300字
2014/11/18 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis