我有一個使用嵌套集模型的分層MySQL表設置。我創建了一個存儲過程,允許我刪除一個組織。MySQL錯誤2014-命令不同步 - 當試圖調用連續存儲的procs時
當我嘗試進行連續調用的存儲過程,我得到以下錯誤指的是第二CALL命令:
2014 - 命令不同步;你不能運行這個命令現在
這裏是SQL我運行:
SELECT @id := id,
@parent_id := parent_id
FROM organization
WHERE name = 'TESTDEAL';
CALL deleteOrg(@id);
CALL deleteOrg(@parent_id);
這裏是我的存儲過程:
DELIMITER $$
CREATE PROCEDURE deleteOrg(IN IN_ID INT)
MODIFIES SQL DATA
BEGIN
START TRANSACTION;
SELECT @org_id := id,
@myLeft := lft,
@myRight := rgt,
@myWidth := rgt - lft + 1
FROM organization
WHERE id = IN_ID;
# delete statements for removing roles and other dependencies
DELETE FROM organization
WHERE id = @org_id;
UPDATE organization
SET rgt = rgt - @myWidth
WHERE rgt > @myRight;
UPDATE organization
SET lft = lft - @myWidth
WHERE lft > @myRight;
COMMIT;
END;
$$
DELIMITER ;
爲什麼第二個命令是失敗的?在第一個CALL命令提交之前,MySQL是否嘗試執行第二個CALL命令?在調用第二個之前,我能強制第一個完全執行嗎?
編輯:組織表使用的InnoDB
編輯:試圖消除START TRANSACTION;和COMMIT;但我仍然得到相同的錯誤
您使用的是什麼版本的MySQL? – 2010-11-01 20:23:14
MySQL版本5.1.41 – 2010-11-01 20:24:33