MySql - 表'proc'未使用LOCK TABLES锁定

时间:2012-07-13 22:43:42

标签: mysql

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

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,但这也不起作用。

1 个答案:

答案 0 :(得分:0)

我将嵌套的mystoredproc2存储过程移动到mystoredproc之外作为一系列SQL语句,并且这样做了。