浅谈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处理csv数据的方法
Mar 11 Python
python执行get提交的方法
Apr 29 Python
Python中Random和Math模块学习笔记
May 18 Python
python requests 测试代理ip是否生效
Jul 25 Python
pandas DataFrame 删除重复的行的实现方法
Jan 29 Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 Python
python解析命令行参数的三种方法详解
Nov 29 Python
django框架auth模块用法实例详解
Dec 10 Python
tensorflow使用指定gpu的方法
Feb 04 Python
Python基于内置库pytesseract实现图片验证码识别功能
Feb 24 Python
python可以用哪些数据库
Jun 22 Python
如何解决安装python3.6.1失败
Jul 01 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
在PWS上安装PHP4.0正式版
2006/10/09 PHP
PHP n个不重复的随机数生成代码
2009/06/23 PHP
PHP中遍历stdclass object的实现代码
2011/06/09 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
PHP对称加密函数实现数据的加密解密
2016/10/27 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
lyhucSelect基于Jquery的Select数据联动插件
2011/03/29 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
js简易namespace管理器 实例代码
2013/06/21 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
原生js实现移动端Touch轮播图的方法步骤
2019/01/03 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
python实现从字典中删除元素的方法
2015/05/04 Python
Python实现简单字典树的方法
2016/04/29 Python
Python正则表达式使用范例分享
2016/12/04 Python
python使用threading获取线程函数返回值的实现方法
2017/11/15 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
Python中创建二维数组
2018/10/17 Python
python快排算法详解
2019/03/04 Python
python实现微信防撤回神器
2019/04/29 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
Python itertools.product方法代码实例
2020/03/27 Python
python 如何实现遗传算法
2020/09/22 Python
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
小学少先队活动方案
2014/02/18 职场文书
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
高中运动会广播稿
2014/09/16 职场文书
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python