#sql #triggers #mariadb
#sql #раздражители #мариадб
Вопрос:
В настоящее время возникли проблемы с реализацией триггера обновления для моей таблицы SQL, в которой при изменении скидок(в процентах) всегда будет обновляться конечная цена товара.
Это проблема, с которой я сталкиваюсь, и я не уверен, почему:
#1064 — У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на наличие правильного синтаксиса для использования рядом с » в строке 5
Например, цена товара А будет составлять 100 долларов со скидкой 25(%). Это означает, что стоимость товара А составит 75
Любые изменения скидки, например, от 25 до 0 ИЛИ от 25 до 50, приведут к ценам 100 и 50 соответственно
Это мой код:
CREATE TRIGGER DiscountUpdate BEFORE UPDATE ON game FOR EACH ROW BEGIN IF NEW.Discount lt;gt; OLD.Discount THEN BEGIN SET NEW.NetPrice=NEW.BaseGamePrice-(NEW.BaseGamePrice*(NEW.Discount/100)); END;
Ответ №1:
У вас есть два НАЧАЛА, удалите BEGIN
if.. then
также после того, как вы пропустили UPDATE
утверждение перед SET
предложением. Добавить UPDATE tablename..
после if.. then
. Попробуйте ниже
CREATE TRIGGER DiscountUpdate BEFORE UPDATE ON game FOR EACH ROW BEGIN IF NEW.Discount lt;gt; OLD.Discount THEN Update Game SET NEW.NetPrice=NEW.BaseGamePrice- (NEW.BaseGamePrice*(NEW.Discount/100)); END IF; END;
Комментарии:
1. Эта ошибка: #1064 — У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, для правильного синтаксиса, который нужно использовать рядом » в строке 5 Все еще отображается