打开blog发现从上一篇文章发布的时间到现在已经近1个月了,时间的概念在这一刻变得这么可怕。。。为自己找点理由吧,这么久没更新是因为。。。好吧,真的不想找类似工作忙、情绪糟糕、没什么可写的诸如此类的理由。我果断检讨---我懒了。
猛然又意识到很多blog社区,包括这里--cnblog对blog的称呼很有意思--”随笔“。记得自己早先开始写BLOG的时候注意到这点时很不满,心说自己还想在这篇BOLG里大说一通呢,里面有很多”牛逼“的心得、”独家“的技术要点还要加上点“幽默”的笔触,怎么他们就这么不当回事呢?居然把我要发表的“大作”一笑带过的感觉,偏称之为“随笔”。如今google了一下-所谓“随笔”即是随手笔录,抒情、叙事或评论不拘,篇幅短小。我想放在如今的BOLG里,“随笔”的意境可能还要更随便些,可大可小,可糙可精,可以是规定自己每天都写,可以是随心所欲有感才而发。“随笔”这词把BLOG的精髓诠释的凌厉精致。SO,我自己写BLOG也会更加“随笔”,提醒自己千千万万不要出现一个月没来写东西的情况了。虽然不会强制自己的频率,但话说一个月都无感来发岂不是人生过得很失败-_-!。。
结束自己的话唠吧。今天总结下最近写游戏服务器端设计数据库的一点心得---再次感慨数据库设计真是一门科学啊,什么技术都是越深入越探不到底。
MySQL 的 replace into 语句:
设计人物卡牌数据表逻辑的时候碰到了一个比较头疼也比较常见的情况:
1. 首先要判断卡牌的数据是否存在; 2. 如果不存在此角色的卡牌数据,则插入;3.如果存在,则更新。
当然如果老老实实按照
if not exists (select id from t where id = 1) //判断是否存在此ID数据 insert into t(id, data) values(1, data) //如果不存在则 insert into 一条指定数据 else update t set data= data where id = 1 //如果存在则update 此ID数据
这种逻辑来做的话也并不复杂,但是毕竟这种操作需要两条数据库语句来执行,而且我很懒,所以MySQL的replace into闪亮登场:
replace into t(id, data) values(1,data)
这里的逻辑是:replace into 语句首先尝试插入数据到表中,如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据,否则直接插入新数据。
一句话搞定!replace into的作用相当于实现了以上问题的逻辑,上述情况是它的典型应用。需要特别注意的是replace into 语句需要主键或唯一键的支持,否则它的功能只相当于insert into 语句!
OK,今天“随笔”到这里了,enjoy!