我是靠谱客的博主 深情机器猫,最近开发中收集的这篇文章主要介绍mysql 触发器复杂案例_mysql的触发器-含案例-含效果 | 时刻需,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天做下触发器的笔记

原来都是用命令的,现在好多都用工具了。

情景一: after

插入本表一 order 后再修改表二 push

表一:

CREATE TABLE `33hao_order` (

`id` int(8) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(30) DEFAULT NULL,

`state` tinyint(1) unsigned NOT NULL DEFAULT '1',

`goods_id` int(8) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;

CREATE TRIGGER `order_add_after` AFTER INSERT ON `33hao_order` FOR EACH ROW begin

declare flag_num int(10);

set flag_num = (select count(*) as flag_num from 33hao_order where id=new.id) ;

if flag_num =1 then

insert into 33hao_push (push_desc,item_id) values (new.id,6);

end if;

end;

表二:

CREATE TABLE `33hao_push` (

`id` int(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '推送ID',

`type` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '推送类型',

`push_desc` varchar(30) NOT NULL COMMENT '推送描述',

`push_state` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '推送状态',

`item_id` int(8) unsigned NOT NULL DEFAULT '0' COMMENT '项目ID',

`member_id` int(8) unsigned NOT NULL DEFAULT '0' COMMENT '会员id',

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

情景二 :before

表一新增或修改前(也就是数据还没有出来时改动数据)表一 或改动其他表

order 表要增加的内容

CREATE TRIGGER `order_mod_before` BEFORE UPDATE ON `33hao_order` FOR EACH ROW begin

declare flag_num int(10);

set flag_num = old.state;

if flag_num =1 then

insert into 33hao_push (push_desc,item_id) values (new.state,6);

end if;

end;

效果和工具截图如下

order 表增加时,push表自动增加(根据order表主键增加)

order表修改时,push表自动修改(根据order表state来判断是否增加push)

这样一来就实现了完全抛开代码实现的实时推送功能了。

注意:如果项目很大时,最好事先做好表的分区功能。负载没做测试,从服务器最好不要有触发器吧。

作者: 神秘剑派-大师兄   技能  xcz

最后

以上就是深情机器猫为你收集整理的mysql 触发器复杂案例_mysql的触发器-含案例-含效果 | 时刻需的全部内容,希望文章能够帮你解决mysql 触发器复杂案例_mysql的触发器-含案例-含效果 | 时刻需所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部