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