- PR -

MYSQL(4.0)での排他制御(レコードロック)について

1
投稿者投稿内容
Angler
ベテラン
会議室デビュー日: 2004/12/21
投稿数: 56
投稿日時: 2005-10-27 17:41
VB6.0+MYSQL(4.0)にてツールを作っています。

MYSQLで、排他ロック時の現在タイムアウト時間が1分程掛かるのですが、
0分にできないでしょうか?

とあるサイトでは
select * from 〜 for update nowait
でロック解除を待たずにエラーを返す。とあったのですが、
SQLエラーとなってしまいます。

そもそもMYSQLの設定なのでしょうか?
ご存知の方がいらっしゃいましたらご教示願います。

宜しくお願い致します。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-10-28 06:41
nowaitって何処で聞きました?
SQL分は方言が多々あるので、まずはMySQLのSQL文を確認してください。
MySQLにはNOWAITに相当する構文は無い事が分かります。
http://dev.mysql.com/doc/refman/4.1/ja/select.html

もしNOWAITを実現するためには、MySQLの設定でタイムアウト値(innodb_lock_wait_timeout)を適当に変更することになるかと思います。

でも、それよりはDBの機能としてのロックを使用するのではなく、テーブル設計を変更し、ロック管理用のフィールドを設ける方が良いのではないかと思います。あるいは可能ならLOCK IN SHARE MODEで代用するとか。
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
1

スキルアップ/キャリアアップ(JOB@IT)