mysql 触发器 简单实例

模拟mysql触发器的使用

一、新建游戏表

create table `game` (

          `id` int(11) not null auto_increment comment "主键ID",

          `name` varchar(255) not null comment"游戏名称",

          `online` int(11) not null comment "在线状态,1:在线-0:下线", PRIMARY KEY (`id`)

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

 

二、插入测试数据

insert into game(id,name,online) values (1,'神仙道',1);

insert into game(id,name,online) values (2,'搜狗地图',1);

insert into game(id,name,online) values (3,'免费小说',1);

insert into game(id,name,online) values (4,'泡妞利器',1);

insert into game(id,name,online) values (5,'炫酷桌面',1);

 

三、查询

select * from game;

1 神仙道1

2 搜狗地图 1

3 免费小说 1

4 泡妞利器 1

5 炫酷桌面 1

 

四、创建热榜游戏表

create table `hot_game` (

           `id` int(11) not null auto_increment comment "主键ID",

           `game_id` int(11) not null comment "游戏ID",

           PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

五、插入热榜游戏

insert into hot_game (id,game_id) values (1,1);

insert into hot_game (id,game_id) values (2,2);

insert into hot_game (id,game_id) values (3,3);

insert into hot_game (id,game_id) values (4,4);

insert into hot_game (id,game_id) values (5,5);

 

六、查询热榜游戏

1 1

2 2

3 3

4 4

5 5

 

七、创建触发器(游戏下线,热榜移除该游戏)

create trigger t_hot_game before update on game for each row

begin if new.online = 0

then delete from hot_game where game_id = old.id;

end if;

end ;

 

八、查询触发器

show triggers;

 

九、游戏下线 update game set online = 0 where id = 1;

 

十、查询热榜游戏列表

select * from hot_game;

2 2

3 3

4 4

5 5

触发器解释: 用来对数据进行监控,当执行delete、update或insert操作时,可以使用触发器来触发某些操作来代替程序编码,效率更高。

 

定义sql结束符

DROP TRIGGER IF EXISTS `updateegopriceondelete` ;

DELIMITER // 
CREATE 
TRIGGER `updateegopriceondelete` AFTER DELETE ON `customerinfo` 
FOR EACH ROW BEGIN 
DELETE FROM egoprice WHERE customerId=OLD.customerId; 
END //
DELIMITER ; 

其中DELIMITER 定好结束符为"$$", 然后最后又定义为";", MYSQL的默认结束符为";". 

你可能感兴趣的:(mysql,触发器,trigger,数据监控)