人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

cakephpのsaveを使用してMySQL(MyISAM)にデータを保存する際のテーブルロックについて質問させてください。

使用するデータベースがMySQL(MyISAM)の場合、cakephpのソース上でロック処理を書かなくてもsaveを実行した段階で自動的にテーブルロックがかかるのでしょうか?

また、ロックがかかる場合、それは排他ロックではなく、共有ロックという認識で問題ないでしょうか?

プログラミング初心者で質問も分かりにくいものになっているかもしれませんが、どうかご教示ください(検索方法がいけなかったのか、ネットで答えを見つけることができませんでした)


●質問者: cre_bo
●カテゴリ:ウェブ制作
✍キーワード:CakePHP MyISAM MySQL いもの いるか
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● tdoi

利用するCakePHPのバージョンにもよるかもしれませんが、僕が知る限りロックは明示的にしてあげる必要があります。CakePHP1.2から導入されたらしいトランザクションを使えればいいのでしょうが、MyISAMでは使用できません。

そこで、MySQLのロックが必要なのであれば、Model::save()を呼び出す前に、Model::query()を使って"LOCK TABLES XXXX"というコマンドを実行させればいいでしょう。また、それを行うためのビヘイビアを定義してしまうのもいいかもしれません。

何かの参考になれば。

◎質問者からの返答

tdoiさん、ご回答ありがとうございます。

頂いた回答をヒントに実際、作成してみようと思います。

なお、追加で質問してしまって申し訳ございませんが、共有ロックにするか排他ロックにするかもプログラム側で指定するのかご教示頂けると幸いです

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ