2012-07-13 50 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之外,並且做到了這一點。