浅谈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求crc32值的方法
Oct 05 Python
python计算圆周率pi的方法
Jul 11 Python
Python模拟百度登录实例详解
Jan 20 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
Feb 18 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
python 信息同时输出到控制台与文件的实例讲解
May 11 Python
python3连接MySQL数据库实例详解
May 24 Python
python3.7 openpyxl 删除指定一列或者一行的代码
Oct 08 Python
python 操作hive pyhs2方式
Dec 21 Python
python实现程序重启和系统重启方式
Apr 16 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
Python如何解除一个装饰器
Aug 07 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 分库分表hash算法
2009/11/12 PHP
php中截取中文字符串的代码小结
2011/07/17 PHP
php使用Smarty的相关注意事项及访问变量的几种方式
2011/12/08 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
javascript中的new使用
2010/03/20 Javascript
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
validator验证控件使用代码
2010/11/23 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
2012/08/24 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
jstree中的checkbox默认选中和隐藏示例代码
2019/12/29 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
python实现的简单RPG游戏流程实例
2015/06/28 Python
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
Python经纬度坐标转换为距离及角度的实现
2020/11/01 Python
python实现学生通讯录管理系统
2021/02/25 Python
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
信用社员工先进事迹材料
2014/02/04 职场文书
mysql连接查询中and与where的区别浅析
2021/07/01 MySQL
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS
JS前端轻量fabric.js系列物体基类
2022/08/05 Javascript