Simple, Slowly

ブログを引っ越ししました。http://48.jp

GET_LOCKでロックをかける

MySQLではGET_LOCKでロックをかけれます。

#ロックが使用可能かを確認します。ロックが使用可能 ( まだ使用されていない ) 場合は 1 を返します。
mysql> SELECT IS_FREE_LOCK("lock1");
        -> 1

#ロックをかけます。成功時は1が返ります。
mysql> SELECT GET_LOCK("lock1",10);
        -> 1

#ロックを解除します。成功時は1が返ります。
mysql> SELECT RELEASE_LOCK("lock1");
        -> 1

注意点としては、一度に使用できるロックは1つということです。
SELECT GET_LOCK("lock1",10);
SELECT GET_LOCK("lock2",10);
と実行すると、lock1はlock2が実行された時点で自動的に解除されます。


http://dev.mysql.com/doc/refman/5.1-olh/ja/miscellaneous-functions.html#function_get-lock
http://dev.mysql.com/doc/refman/5.1/ja/miscellaneous-functions.html