countup - taka512/memo GitHub Wiki

カウントアップのやり方

ポイントログ方式

下記のようにuniqueキーでカウンターに重複値が入るのを防ぐ

CREATE TABLE `counter` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `mission_id` int(11) NOT NULL,
  `counter` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQ_E1631C91BE6CAE90` (`mission_id`,`counter` )

先にupdateする

// 更新失敗ならinsertする
if !update ~
  INSERT INTO table (a,b,c) VALUES (1,2,3)
    -> ON DUPLICATE KEY UPDATE c=c+1;
// 更新後

 selectして制限値を超えていたらエラー

ロックを取る

##聞いたやり方

今度の勉強会のネタにする予定のものなんですが

http://info.dwango.co.jp/rd/2010/01/mysql.html

こういうキューテーブルを作成して
予め最大人数分レコードを入れてキューを取るって方法もありますね。