浅谈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网络编程示例(客户端与服务端)
Apr 24 Python
在ironpython中利用装饰器执行SQL操作的例子
May 02 Python
python使用str & repr转换字符串
Oct 13 Python
Python有序查找算法之二分法实例分析
Dec 11 Python
Python求出0~100以内的所有素数
Jan 23 Python
3个用于数据科学的顶级Python库
Sep 29 Python
Django import export实现数据库导入导出方式
Apr 03 Python
利用pandas向一个csv文件追加写入数据的实现示例
Apr 23 Python
python设置中文界面实例方法
Oct 27 Python
Python实现王者荣耀自动刷金币的完整步骤
Jan 22 Python
实操Python爬取觅知网素材图片示例
Nov 27 Python
Python Pandas 删除列操作
Mar 16 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使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
JSONP 的原理、理解 与 实例分析
2020/05/16 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
Python中pygame的mouse鼠标事件用法实例
2015/11/11 Python
python matplotlib库绘制条形图练习题
2019/08/10 Python
python3中利用filter函数输出小于某个数的所有回文数实例
2019/11/24 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
浅谈pytorch池化maxpool2D注意事项
2020/02/18 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
Spartoo芬兰:欧洲最大的网上鞋店
2016/08/28 全球购物
一些.net面试题
2014/10/06 面试题
毕业自荐信
2013/12/16 职场文书
《雨霖铃》听课反思
2014/02/13 职场文书
学校党员对照检查材料
2014/08/28 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
政风行风整改方案
2014/10/25 职场文书
个人求职意向书
2015/05/11 职场文书
小学二年级语文教学反思
2016/03/03 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
微信小程序实现轮播图指示器
2022/06/25 Javascript