无法诊断MySQL存储过程的问题

我已经定义了以下存储过程来添加/更新名为ImportedProduct的表。

如果提供的主键ImportedProductId大于零,则更新现有记录,否则插入新的记录:

DELIMITER //

CREATE PROCEDURE AddOrupdateImportedProduct (
    IN ImportedProductId BIGINT,IN UniqueThirdPartyCode VARCHAR(64),IN BranchId BIGINT
) 
BEGIN
    IF ImportedProductId <= 0 THEN
        INSERT INTO ImportedProduct(UniqueThirdPartyCode,BranchId)
        VALUES(UniqueThirdPartyCode,BranchId);
    ELSE
        UPDATE 
            ImportedProduct
        SET
            UniqueThirdPartyCode = UniqueThirdPartyCode,BranchId = BranchId
        WHERE  
            ImportedProductId = ImportedProductId;
    END IF;
END //

DELIMITER ;

现在,我运行以下代码来更新现有行:

CALL AddOrupdateImportedProduct (1,'y-105',24);

我可以看到表中存在带有ImportedProductId = 1的记录,但是出现以下错误:

  

您使用的是安全更新模式,并且您尝试更新表时没有   使用KEY列禁用安全模式的地方

zzp521cq 回答:无法诊断MySQL存储过程的问题

我很确定ImportedProductId = ImportedProductId始终有效。也许重命名变量或为更新的表添加别名。

本文链接:https://www.f2er.com/3148097.html

大家都在问