Before и After - MySQL

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

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

Добрый день,подскажите в каких случаях в триггере можно безболезненно заменить BEFORE на AFTER? ВОТ пример кода
Листинг программы
  1. CREATE TRIGGER authors_delete BEFORE DELETE
  2. ON authors FOR EACH ROW
  3. DELETE FROM books WHERE authorId=OLD.id;
  4. CREATE TRIGGER authors_update BEFORE UPDATE
  5. ON authors FOR EACH ROW
  6. UPDATE books SET authorId=NEW.id
  7. WHERE authorId=OLD.id;
  8. CREATE TRIGGER books_delete BEFORE DELETE
  9. ON books FOR EACH ROW
  10. DELETE FROM orders WHERE bookId=OLD.id;
  11. CREATE TRIGGER books_update BEFORE UPDATE
  12. ON books FOR EACH ROW
  13. UPDATE orders SET bookId=NEW.id
  14. WHERE bookId=OLD.Id;
  15. CREATE TRIGGER readers_delete BEFORE DELETE
  16. ON readers FOR EACH ROW
  17. DELETE FROM orders WHERE readerId=OLD.Id;
  18. CREATE TRIGGER readers_update BEFORE UPDATE
  19. ON readers FOR EACH ROW
  20. UPDATE orders SET readerId=NEW.Id
  21. WHERE readerId=OLD.Id;

Решение задачи: «Before и After»

textual
Листинг программы
  1. delimiter $$
  2. CREATE TRIGGER orders_insertn BEFORE INSERT
  3. ON orders FOR EACH ROW
  4.     IF NEW.duration> 14
  5.         THEN SET NEW.duration = 14;
  6. END IF$$
  7. delimiter ;
  8.  
  9. delimiter $$
  10. CREATE TRIGGER orders_insertn BEFORE UPDATE
  11. ON orders FOR EACH ROW
  12.     IF NEW.duration> 14
  13.         THEN SET NEW.duration = 14;
  14. END IF$$
  15. delimiter ;

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

  1. Создается триггер с именем orders_insertn для таблицы orders.
  2. Триггер срабатывает перед INSERT операцией в таблице orders.
  3. Условие IF NEW.duration> 14 проверяет, что продолжительность заказа больше 14.
  4. Если условие истинно, то значение NEW.duration устанавливается равным 14.
  5. Триггер также срабатывает перед UPDATE операцией в таблице orders.
  6. Условие IF NEW.duration> 14 снова проверяет, что продолжительность заказа больше 14.
  7. Если условие истинно, то значение NEW.duration устанавливается равным 14.
  8. Значение NEW.duration в обоих случаях обозначает новую продолжительность заказа, которую мы хотим установить.
  9. Значение 14 в обоих случаях обозначает продолжительность заказа, которую мы хотим установить вместо большей.
  10. В обоих случаях триггер изменяет значение NEW.duration на 14, если условие истинно.
  11. Значение NEW.duration в обоих случаях после выполнения триггера будет равно 14, если условие истинно.
  12. Значение NEW.duration в обоих случаях после выполнения триггера будет равно исходному значению, если условие ложно.

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


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

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

13   голосов , оценка 4.231 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут