浅谈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 可爱的大小写
Sep 06 Python
python发送邮件示例(支持中文邮件标题)
Feb 16 Python
python中__call__方法示例分析
Oct 11 Python
python端口扫描系统实现方法
Nov 19 Python
Cpy和Python的效率对比
Mar 20 Python
python实现爬虫统计学校BBS男女比例(一)
Dec 31 Python
机器学习10大经典算法详解
Dec 07 Python
利用python GDAL库读写geotiff格式的遥感影像方法
Nov 29 Python
wxPython实现带颜色的进度条
Nov 19 Python
Anaconda的安装及其环境变量的配置详解
Apr 22 Python
python 使用三引号时容易犯的小错误
Oct 21 Python
python Gabor滤波器讲解
Oct 26 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-MySQL教程归纳总结
2008/06/07 PHP
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
js实现简单登录功能的实例代码
2013/11/09 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
[57:55]EG vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python动态加载变量示例分享
2014/02/17 Python
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
用Python实现KNN分类算法
2017/12/22 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
Spartoo荷兰:鞋子、包包和服装
2018/07/12 全球购物
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
几个常见的软件测试问题
2016/09/07 面试题
升国旗仪式主持词
2014/03/19 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
离婚协议书范文2015
2015/01/26 职场文书