我有一个使用嵌套集模型的分层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