IvanIlyasov
@IvanIlyasov
Познаю мир

Как при обновлении одного значения в таблице сделать обновление другого, так чтобы обновляемое значение было числом с -10 от первого?

Не знаю как сформулировать правильно в MySql плохо разбираюсь.

Дано:
Таблица test_table в ней столбцы id_product, quantity и quantity_stock - везде Integer

Нужно:
Чтобы при обновлении столбца quantity, столбец quantity_stock принимал значение = новое значение столбца quantity - 10

Вот на всё, на что меня хватило, и видимо, я ничего не понимаю:
CREATE TRIGGER update_test AFTER UPDATE ON test_table
FOR EACH ROW
BEGIN
IF NEW.quantity <=> OLD.quantity THEN
	UPDATE test_table SET quantity_stock = NEW.quantity - 10;
END IF;
END;
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
Измените тригер на BEFORE UPDATE и просто выставляйте новое значение перед изменением.
CREATE TRIGGER update_test BEFORE UPDATE ON test_table
FOR EACH ROW
BEGIN
IF NEW.quantity <> OLD.quantity THEN
  SET NEW.quantity_stock = NEW.quantity - 10;
END IF;
END;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А что мешает сделать такое изменение прямо в запросе?
UPDATE `test_table` 
  SET `quantity` = :newQuantity, `quantity_stock` = :newQuantity-10
  WHERE `id_product` = :productId
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы