Я работаю с триггером, который проверяет введенную пользователем информацию перед обновлением информации в таблице, скажем, это называется «продукт». В таблице «Продукт» есть 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
?