3

私のアプリは、テーブルをロックし、(ストアド プロシージャを使用して) 更新し、ロックを解除しようとする関数で構成されています。コードは次のようになります。

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;

参考までに: 私もmytable2lock ステートメントでロックしましたが、それも機能しません。

4

1 に答える 1

0

ネストされたmystoredproc2ストアド プロシージャmystoredprocを一連の SQL ステートメントとして外部に移動したところ、うまくいきました。

于 2012-07-29T05:21:52.823 に答える