浅谈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库urllib与urllib2主要区别分析
Jul 13 Python
python实现进程间通信简单实例
Jul 23 Python
Python实现国外赌场热门游戏Craps(双骰子)
Mar 31 Python
详解Python中类的定义与使用
Apr 11 Python
Python MySQL数据库连接池组件pymysqlpool详解
Jul 07 Python
Python中logging.NullHandler 的使用教程
Nov 29 Python
解决pycharm的Python console不能调试当前程序的问题
Jan 20 Python
Python中dict和set的用法讲解
Mar 28 Python
python多线程实现代码(模拟银行服务操作流程)
Jan 13 Python
python在一个范围内取随机数的简单实例
Aug 16 Python
Django解决frame拒绝问题的方法
Dec 18 Python
理解深度学习之深度学习简介
Apr 14 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
YII路径的用法总结
2014/07/09 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
PHP实现获取url地址中顶级域名的方法示例
2019/06/05 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
ExtJs使用总结(非常详细)
2012/03/22 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
AngularJS 如何在控制台进行错误调试
2016/06/07 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
node实现的爬虫功能示例
2018/05/04 Javascript
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
jQuery实现的模仿雨滴下落动画效果
2018/12/11 jQuery
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
前端性能优化建议
2020/09/17 Javascript
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
python开发入门——set的使用
2020/09/03 Python
Python实现手势识别
2020/10/21 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
个性发展自我评价
2014/02/11 职场文书
数学检讨书1000字
2014/02/24 职场文书
车辆转让协议书
2014/09/24 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书