2012-07-13 53 views
3

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

LOCK TABLE mytable WRITE; 
CALL myStoredProc; 
UNLOCK TABLES; 

当执行CALL myStoredProc;一部分时,给予以下错误消息的函数被调用,它的错误了:

Table 'proc' was not locked with LOCK TABLES 

我试着用mytable但沿锁定mysql.proc似乎没有帮助。关于这种情况的任何想法?

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

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

正如你看到的,上面的存储过程嵌套一个又一个。第二个简单的包含更新语句:

UPDATE mytable2 SET _column = _now; 

FYI:我也是在lock语句锁定mytable2但这并不工作。

+1

'proc'!='mytable':也许在'magicalStoredProc'中显示[相关部分]? – 2012-07-13 22:45:02

+0

更多详细信息已添加,谢谢。 – Zishan 2012-07-13 22:57:48

回答

0

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