浅谈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实现的登录和操作开心网脚本分享
Jul 09 Python
Python的Django框架安装全攻略
Jul 15 Python
python中requests小技巧
May 10 Python
利用python批量修改word文件名的方法示例
Oct 17 Python
python写一个md5解密器示例
Feb 23 Python
用Python将结果保存为xlsx的方法
Jan 28 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
Jan 29 Python
java中的控制结构(if,循环)详解
Jun 26 Python
python 画函数曲线示例
Dec 04 Python
解决Django no such table: django_session的问题
Apr 07 Python
使用Python将图片转正方形的两种方法实例代码详解
Apr 29 Python
python用分数表示矩阵的方法实例
Jan 11 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 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
php+redis实现多台服务器内网存储session并读取示例
2017/01/12 PHP
Javascript实现CheckBox的全选与取消全选的代码
2010/07/20 Javascript
jquery cookie的用法总结
2013/11/18 Javascript
Javascript限制网页只能在微信内置浏览器中访问
2014/11/09 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
Python logging模块学习笔记
2014/05/24 Python
python+matplotlib实现礼盒柱状图实例代码
2018/01/16 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
python 字符串常用函数详解
2019/09/11 Python
Python代码块及缓存机制原理详解
2019/12/13 Python
python 实现性别识别
2020/11/21 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
SmartBuyGlasses中国:唯视良品(销售名牌太阳镜、墨镜和眼镜框)
2017/07/03 全球购物
Bowflex美国官方网站:高级家庭健身器材
2017/12/22 全球购物
预订奥兰多和佛罗里达州公园门票:FloridaTix
2018/01/03 全球购物
联想台湾官网:Lenovo TW
2018/05/09 全球购物
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
售后服务承诺书
2014/03/26 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书