Один триггер в denwer - MySQL
Формулировка задачи:
Здравствуйте. Прошу прощения заранее за вероятные глупости, и что отнимаю время.. Поиск не дал ничего ясного..
Если какого-нибудь гуру по sql не затруднит.. помогите, пожалуйста, составить триггер, который изменял бы строку в в одной таблице, при добавлении записи в другую..
Методички у нас очень жестокие..точнее их нет, сказали ищите в интернете.. А разновидности синтаксиса от версии к версии уже мозолят глаза..
Пока удалось создать триггер который изменяет столбец цена, например, 300, как у меня..
В
общем.. задание выглядит так "Для размещения вакансии фирма должна внести оплату". Имеется таблица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
Решение задачи: «Один триггер в 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 ;
Объяснение кода листинга программы
- Установка триггера перед операцией вставки на таблицу
oplata_raz. - Проверка условия в каждом из строк перед вставкой.
- Если условие не выполняется, то вставка не производится и выполняется операция удаления.
- Если условие выполняется, то производится обновление записи в таблице
firm. - Значение переменной
num_chetв таблицеfirmпроверяется на превышение 300. - Если значение переменной
num_chetпревышает 300, то оно уменьшается на 300. - Если значение переменной
num_chetне превышает 300, то выполняется операция удаления записи из таблицыoplata_raz. - Значение переменной
id_firmв таблицеfirmиспользуется для связи с таблицейoplata_raz. - Значение переменной
id_vksв таблицеoplata_razиспользуется для связи с таблицейfirm. - Значение переменной
NEW.id_firmв таблицеoplata_razиспользуется для связи с таблицейfirm. - Значение переменной
NEW.id_vksв таблицеoplata_razиспользуется для связи с таблицейfirm. - Значение переменной
NEW.id_firmв таблицеoplata_razиспользуется для связи с таблицейfirm. - Значение переменной
NEW.id_vksв таблицеoplata_razиспользуется для связи с таблицейfirm. - Значение переменной
NEW.id_firmв таблицеoplata_razиспользуется для связи с таблицейfirm. - Значение переменной
NEW.id_vksв таблицеoplata_razиспользуется для связи с таблицейfirm. - Значение переменной
NEW.id_firmв таблицеoplata_razиспользуется для связи с таблицейfirm. - Значение переменной
NEW.id_vksв таблицеoplata_razиспользуется для связи с таблицейfirm. - Значение переменной
NEW.id_firmв таблицеoplata_razиспользуется для связи с таблицейfirm. - Значение переменной
NEW.id_vksв таблицеoplata_razиспользуется для связи с таблицейfirm. - Значение переменной
NEW.id_firmв таблицеoplata_razиспользуется для связи с таблицейfirm.