浅谈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 基础学习第二弹 类属性和实例属性
Aug 27 Python
urllib2自定义opener详解
Feb 07 Python
python设计模式大全
Jun 27 Python
numpy.transpose对三维数组的转置方法
Apr 17 Python
Python实现分段线性插值
Dec 17 Python
Python一键安装全部依赖包的方法
Aug 12 Python
python多项式拟合之np.polyfit 和 np.polyld详解
Feb 18 Python
Numpy 多维数据数组的实现
Jun 18 Python
OpenCV利用python来实现图像的直方图均衡化
Oct 21 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 Python
python基础之while循环语句的使用
Apr 20 Python
用python批量解压带密码的压缩包
May 31 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 接口类与抽象类的实际作用
2009/11/26 PHP
PHP 创建标签云函数代码
2010/05/26 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
php二维数组按某个键值排序的实例讲解
2019/02/15 PHP
javascript parseInt 函数分析(转)
2009/03/21 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
2016/09/17 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
Nodejs多站点切换Htpps协议详解及简单实例
2017/02/23 NodeJs
canvas实现环形进度条效果
2017/03/23 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
Django权限机制实现代码详解
2018/02/05 Python
python实现自动登录后台管理系统
2018/10/18 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
中间件分为哪几类
2016/09/18 面试题
高中物理教学反思
2014/02/08 职场文书
求职信结尾怎么写
2014/05/26 职场文书
企业法人代表任命书
2014/06/06 职场文书
学校运动会霸气口号
2014/06/07 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
2014年扶贫工作总结
2014/11/18 职场文书
仙境之桥观后感
2015/06/16 职场文书
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL
简单聊聊Golang中defer预计算参数
2022/03/25 Golang