浅谈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之yield表达式学习
Sep 02 Python
使用Django的模版来配合字符串翻译工作
Jul 27 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
Jul 09 Python
详解Python静态网页爬取获取高清壁纸
Apr 23 Python
利用pyecharts实现地图可视化的例子
Aug 12 Python
django框架单表操作之增删改实例分析
Dec 16 Python
推荐8款常用的Python GUI图形界面开发框架
Feb 23 Python
Python虚拟环境的创建和包下载过程分析
Jun 19 Python
python Matplotlib模块的使用
Sep 16 Python
Django数据库迁移常见使用方法
Nov 12 Python
使用pytorch实现线性回归
Apr 11 Python
Python Django搭建文件下载服务器的实现
May 10 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抓即时股票信息
2006/10/09 PHP
php 分库分表hash算法
2009/11/12 PHP
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
php实现从上传文件创建缩略图的方法
2015/04/02 PHP
PHP解密Unicode及Escape加密字符串
2015/05/17 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
理解php依赖注入和控制反转
2016/05/11 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
flash遮住div问题的正确解决方法
2014/02/27 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
微信小程序访问豆瓣电影api的实现方法
2019/03/31 Javascript
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
python 运算符 供重载参考
2009/06/11 Python
详解Python中的正则表达式的用法
2015/04/09 Python
Python读写及备份oracle数据库操作示例
2018/05/17 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
python实现串口通信的示例代码
2020/02/10 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
高中生活自我鉴定
2014/01/18 职场文书
建房协议书
2014/04/11 职场文书
森林防火宣传标语
2014/06/27 职场文书