mysql 触发器 实例_mysql的触发器-含案例-含效果 | 时刻需

本文介绍了如何使用MySQL触发器实现实时数据推送。通过设置AFTER INSERT和BEFORE UPDATE触发器,当33hao_order表中有新的插入或更新时,自动更新33hao_push表。触发器使得在不依赖代码的情况下,也能完成数据的实时同步,但作者建议在大型项目中考虑表分区和负载问题,慎用触发器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天做下触发器的笔记

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

情景一: 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;

效果和工具截图如下

1-1.png

2-2.png

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值