模拟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的默认结束符为";".