Один триггер в denwer - MySQL

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

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

Здравствуйте. Прошу прощения заранее за вероятные глупости, и что отнимаю время.. Поиск не дал ничего ясного.. Если какого-нибудь гуру по sql не затруднит.. помогите, пожалуйста, составить триггер, который изменял бы строку в в одной таблице, при добавлении записи в другую.. Методички у нас очень жестокие..точнее их нет, сказали ищите в интернете.. А разновидности синтаксиса от версии к версии уже мозолят глаза..

В

общем.. задание выглядит так "Для размещения вакансии фирма должна внести оплату". Имеется таблица

firm

(фирмы) 12шт и

oplata_raz

(оплата размещения вакансии) 48шт. Скриншоты прилагаю..
Пока удалось создать триггер который изменяет столбец

num_chet

(тобишь, так сказать, деньги фирмы) у всех фирм сразу =/ Никак не могу допереть где и чего надо исправить/добавить..
CREATE TRIGGER `trigger1` BEFORE INSERT ON `oplata_raz` FOR each ROW UPDATE `firm` SET `num_chet`=`num_chet`-300
цена, например, 300, как у меня..

Решение задачи: «Один триггер в denwer»

textual
Листинг программы
delimiter //
CREATE TRIGGER upd_check BEFORE INSERT ON oplata_raz
FOR EACH ROW 
BEGIN
IF (SELECT num_chet FROM firm WHERE id_firm=NEW.id_firm) > 300 THEN
UPDATE firm SET num_chet=num_chet-300 WHERE id_firm=NEW.id_firm;
ELSE DELETE FROM oplata_raz WHERE id_vks=NEW.id_vks;
END IF;
END;//
delimiter ;

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

  1. Установка триггера перед операцией вставки на таблицу oplata_raz.
  2. Проверка условия в каждом из строк перед вставкой.
  3. Если условие не выполняется, то вставка не производится и выполняется операция удаления.
  4. Если условие выполняется, то производится обновление записи в таблице firm.
  5. Значение переменной num_chet в таблице firm проверяется на превышение 300.
  6. Если значение переменной num_chet превышает 300, то оно уменьшается на 300.
  7. Если значение переменной num_chet не превышает 300, то выполняется операция удаления записи из таблицы oplata_raz.
  8. Значение переменной id_firm в таблице firm используется для связи с таблицей oplata_raz.
  9. Значение переменной id_vks в таблице oplata_raz используется для связи с таблицей firm.
  10. Значение переменной NEW.id_firm в таблице oplata_raz используется для связи с таблицей firm.
  11. Значение переменной NEW.id_vks в таблице oplata_raz используется для связи с таблицей firm.
  12. Значение переменной NEW.id_firm в таблице oplata_raz используется для связи с таблицей firm.
  13. Значение переменной NEW.id_vks в таблице oplata_raz используется для связи с таблицей firm.
  14. Значение переменной NEW.id_firm в таблице oplata_raz используется для связи с таблицей firm.
  15. Значение переменной NEW.id_vks в таблице oplata_raz используется для связи с таблицей firm.
  16. Значение переменной NEW.id_firm в таблице oplata_raz используется для связи с таблицей firm.
  17. Значение переменной NEW.id_vks в таблице oplata_raz используется для связи с таблицей firm.
  18. Значение переменной NEW.id_firm в таблице oplata_raz используется для связи с таблицей firm.
  19. Значение переменной NEW.id_vks в таблице oplata_raz используется для связи с таблицей firm.
  20. Значение переменной NEW.id_firm в таблице oplata_raz используется для связи с таблицей firm.

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


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

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

15   голосов , оценка 4.267 из 5
Похожие ответы