浅谈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 相关文章推荐
wxPython窗口的继承机制实例分析
Sep 28 Python
Python实现提取文章摘要的方法
Apr 21 Python
浅谈Python生成器generator之next和send的运行流程(详解)
May 08 Python
python 简单备份文件脚本v1.0的实例
Nov 06 Python
python 拼接文件路径的方法
Oct 23 Python
python生成带有表格的图片实例
Feb 03 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 Python
python使用opencv实现马赛克效果示例
Sep 28 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
Dec 11 Python
使用Nibabel库对nii格式图像的读写操作
Jul 01 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
Feb 03 Python
Python学习之os包使用教程详解
Mar 21 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 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
php curl的深入解析
2013/06/02 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
2015/08/28 PHP
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
PHP实现的XXTEA加密解密算法示例
2018/08/28 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
2016/02/16 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
jQuery实现视频展示效果
2020/05/30 jQuery
Python基于有道实现英汉字典功能
2015/07/25 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
python中的global关键字的使用方法
2019/08/20 Python
python3 实现口罩抽签的功能
2020/03/11 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
django中related_name的用法说明
2020/05/20 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
印度首个本地在线平台:nearbuy
2019/03/28 全球购物
学生喝酒检讨书
2014/02/06 职场文书
学习保证书范文
2014/04/30 职场文书
社区文化建设方案
2014/05/02 职场文书
考察现实表现材料
2014/05/19 职场文书
敲诈同学钱财检讨书范文
2014/11/18 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
redis 查看所有的key方式
2021/05/07 Redis