Создание trigger в musql - MySQL

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Столкнулась со следующей проблемой: есть trigger ins, который при добавлении записи в таблицу shopcart(корзина покупателя книг(id_user, id_book, amount)), должен вычесть из таблицы books из общего числа книг(full_amount) число купленных(amount). Нужна дополнительная проверка на отрицательность full_amount (-10 книг быть не может ). Помогите решить пожалуйста!
CREATE TRIGGER ins
AFTER INSERT ON shopcart
FOR EACH ROW
  UPDATE books
  SET books.full_amount=books.full_amount-NEW.amount
WHERE books.id = new.book_id;

Решение задачи: «Создание trigger в musql»

textual
Листинг программы
CREATE TRIGGER ins
BEFORE INSERT ON shopcart
FOR EACH ROW
  BEGIN
    IF (books.full_amount-new.amount > -1) THEN
    UPDATE books
    SET books.full_amount=books.full_amount-NEW.amount
    WHERE books.id = new.book_id;
  END IF;
END

Объяснение кода листинга программы

  1. Создание триггера с именем ins
  2. Триггер срабатывает перед вставкой новой записи в таблицу shopcart
  3. Условие IF проверяет, что количество книг в таблице books не станет отрицательным при вставке новой записи
  4. Если условие выполняется, то выполняется обновление записи в таблице books на количество вставляемой книги минус количество книг, которые уже есть в таблице books
  5. Обновление происходит только для записей, где id книги совпадает с id вставляемой книги

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5