Я определил следующую хранимую процедуру для добавления / обновления таблицы с именем 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
,но я получаю следующую ошибку:
Вы используете безопасный режим обновления и пытались обновить таблицу без WHERE, в которой используется столбец KEY. Чтобы отключить безопасный режим