我已经定义了以下存储过程来添加/更新名为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列禁用安全模式的地方