Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2283268
  • 博文数量: 276
  • 博客积分: 5998
  • 博客等级: 大校
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-24 14:43
文章分类

全部博文(276)

文章存档

2014年(25)

2013年(11)

2012年(69)

2011年(167)

2010年(4)

分类: Mysql/postgreSQL

2012-12-12 14:22:44

向au_online_info插入一条记录,如果au_online_total表中存在相同userid的记录,则total_online,total_score累加online_time,如果不存在就向表au_online_total中一条记录(total_online,total_score为相同值)。

点击(此处)折叠或打开

  1. Create Table: CREATE TABLE `au_online_info` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `userid` bigint(20) NOT NULL,
  4.   `username` varchar(50) NOT NULL,
  5.   `login_time` datetime NOT NULL,
  6.   `logout_time` datetime NOT NULL,
  7.   `online_time` float NOT NULL,
  8.   `login_ip` varchar(50) DEFAULT NULL,
  9.   `memo` varchar(255) DEFAULT NULL,
  10.   PRIMARY KEY (`id`)
  11. ) ENGINE=InnoDB DEFAULT CHARSET=latin1


  12. Create Table: CREATE TABLE `au_online_total` (
  13.   `id` int(11) NOT NULL AUTO_INCREMENT,
  14.   `userid` bigint(20) NOT NULL,
  15.   `username` varchar(50) NOT NULL,
  16.   `total_online` bigint(20) NOT NULL,
  17.   `total_score` bigint(20) NOT NULL,
  18.   PRIMARY KEY (`id`)
  19. ) ENGINE=InnoDB DEFAULT CHARSET=latin1



  20. delimiter //
  21. create trigger au_online_info_total after insert on au_online_info for each row
  22. Begin
  23. set @userid:=new.userid;
  24. set @online_time:=new.online_time;
  25. If not exists(select 1 from au_online_total where userid= @userid) then
  26. insert into au_online_total(userid,username,total_online,total_score) select userid,username,sum(online_time),sum(online_time) from au_online_info where userid=@userid;
  27. else
  28. update au_online_total set total_online=total_online @online_time,total_score=total_score @online_time where userid=@userid;
  29. END IF;
  30. end;
  31. //
  32. delimiter ;

  33. insert into au_online_info(userid,username,online_time) values(2,'jack2',1) ;

阅读(2683) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~