Невозможно диагностировать проблему с хранимой процедурой MySQL. - PullRequest
0 голосов
/ 07 ноября 2019

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

1 Ответ

1 голос
/ 07 ноября 2019

Я почти уверен, ImportedProductId = ImportedProductId держится всегда .. Возможно, переименуйте вашу переменную или добавьте псевдоним в обновленную таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...