Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток, коллеги.
Неактивен
IF (SELECT `year`, `month` FROM last_proj_art_nr WHERE `year` = YEAR(CURDATE()) AND `month` = MONTH(CURDATE())) THEN
А это что?
Может так будет работать:
CREATE TRIGGER update_last_proj_art_nr AFTER INSERT ON projectbook FOR EACH ROW BEGIN declare y YEAR default YEAR(CURDATE()); declare m INT default MONTH(CURDATE()); declare ry YEAR; declare rm INT; SELECT `year`, `month` into ry, rm FROM last_proj_art_nr WHERE `year` = y AND `month` = m; if ((ry is not NULL) and (rm is not NULL)) THEN UPDATE last_proj_art_nr SET number = number + 1 WHERE `year` = y AND `month` = m; ELSE INSERT INTO last_proj_art_nr (`year`, `month`, `number`) VALUES (y, m, 1); END IF; END;
Или так:
CREATE TRIGGER update_last_proj_art_nr AFTER INSERT ON projectbook FOR EACH ROW BEGIN declare y YEAR default YEAR(CURDATE()); declare m INT default MONTH(CURDATE()); UPDATE last_proj_art_nr SET number = number + 1 WHERE `year` = y AND `month` = m; if (ROW_COUNT() < 1) then INSERT INTO last_proj_art_nr (`year`, `month`, `number`) VALUES (y, m, 1); end if; END;
Отредактированно Артём Н. (05.05.2010 12:11:38)
Неактивен
Ну да, еще есть хорошее слово EXISTS(), которое подходит сюда по
логике. Но для конкретной задачи я бы рекомендовал использовать
Неактивен
Блин, точно. Забыл про ON DUPLICATE KEY. Я туп.
Неактивен
Спасибо, работает!
Неактивен