Проблемы С SQL-Триггером

#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 Все еще отображается