私のアプリは、テーブルをロックし、(ストアド プロシージャを使用して) 更新し、ロックを解除しようとする関数で構成されています。コードは次のようになります。
LOCK TABLE mytable WRITE;
CALL myStoredProc;
UNLOCK TABLES;
関数が呼び出されると、CALL myStoredProc;
パーツの実行時にエラーが発生し、次のエラー メッセージが表示されます。
Table 'proc' was not locked with LOCK TABLES
mysql.proc
一緒にロックしようとしましmytable
たが、それは役に立たなかったようです。このタイプのシナリオに関するアイデアはありますか?
更新: 最初のストアド プロシージャは次のようになります。
CALL mystoredproc2(NOW());
UPDATE mytable SET _column = NOW();
SELECT * FROM mytable WHERE _column > NOW();
ご覧のとおり、上記のストアド プロシージャは別のストアド プロシージャをネストしています。2 番目のものには、更新ステートメントが含まれているだけです。
UPDATE mytable2 SET _column = _now;
参考までに: 私もmytable2
lock ステートメントでロックしましたが、それも機能しません。