3

我的应用程序包含一个函数,在该函数中我试图锁定一个表,更新它(使用存储过程)然后解锁它。代码类似于:

LOCK TABLE mytable WRITE;
CALL myStoredProc;
UNLOCK TABLES;

调用该函数时,CALL myStoredProc;执行该部分时会出错,并给出以下错误消息:

Table 'proc' was not locked with LOCK TABLES

我尝试锁定mysql.procmytable但这似乎没有帮助。关于这种情况的任何想法?

更新: 第一个存储过程如下:

CALL mystoredproc2(NOW());
UPDATE mytable SET _column = NOW();
SELECT * FROM mytable WHERE _column > NOW();

如您所见,上面的存储过程嵌套了另一个。第二个只包含一个更新语句:

UPDATE mytable2 SET _column = _now;

仅供参考:我也锁定mytable2了 lock 语句,但这也不起作用。

4

1 回答 1

0

我将嵌套存储过程作为一系列 SQL 语句移到了mystoredproc2外部,这就成功了。mystoredproc

于 2012-07-29T05:21:52.823 回答