MySQL перед триггером обновления: как получить критерии в предложении where, когда пользователь использует команду UPDATE - PullRequest
0 голосов
/ 06 апреля 2020

Я работаю с триггером, который проверяет введенную пользователем информацию перед обновлением информации в таблице, скажем, это называется «продукт». В таблице «Продукт» есть 5 полей: Номер продукта (VARCHAR), Название продукта (VARCHAR), Производитель (VARCHAR), Склад (INT), Цена (VARCHAR).

Предположим, пользователи будут обновлять "склад" (который является INT) в таблице "Продукт" с помощью следующей команды

UPDATE Product SET Stock = 10 WHERE ProdNo = 'P0036577';

и мой программный код для завершения моей задачи, как показано ниже:

DELIMITER //
DROP TRIGGER IF EXISTS price_update_trig //
CREATE TRIGGER price_update_trig
    BEFORE UPDATE ON product 
    FOR EACH ROW

BEGIN

    DECLARE oldPrice DECIMAL(10,2) DEFAULT 0;
    DECLARE newPrice DECIMAL(10,2) DEFAULT 0;
    DECLARE totalRev DECIMAL(10,2) DEFAULT 0;
    SET oldPrice = substr(OLD.price, 2);
    SET newPrice = oldPrice - oldPrice * (NEW.stock - OLD.stock) / OLD.stock;
    SET totalRev = (SELECT sum(substr(price, 2) * stock) FROM product where ProdNo <> ***???** );
    SET totalRev = totalRev - oldPrice * OLD.stock + newPrice * NEW.stock;
    IF (totalRev > 17000.0) then
    SET NEW.price = concat('$', newPrice);
    else
    SET NEW.price = concat('$', oldPrice);
    END IF;
END //

DELIMITER ;

Что Я не знаю, как это сделать - как получить ввод пользователя в предложении where, что означает ProdNo ('P0036577'), а затем поместить его в условие where запроса для totalRev?

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