DELIMITER //
CREATE TRIGGER `last_update_bets_data` BEFORE UPDATE ON `bets`
FOR EACH ROW BEGIN
IF NEW.`rate` != OLD.`rate` THEN
SET NEW.`time_change` = NOW();
END IF;
END
CREATE TRIGGER `last_update_caps_data` BEFORE UPDATE ON `caps`
FOR EACH ROW BEGIN
IF NEW.`rate` != OLD.`rate` THEN
SET NEW.`time_change` = NOW();
END IF;
END
//
DELIMITER ;
Ответ MySQL: Документация
#1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около '' на строке 4
Я через phpmyadmin хотел сделать, но не вышло. И так тоже не получается. Я где-то слышал, что нельзя добавлять триггер на событие одной и той же таблицы. Может по-этому?
Ответ MySQL: #1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около 'FOR EACH ROW BEGIN IF NEW.`rate` != OLD.`rate` THEN SET NEW.`time_change' на строке 1
Falseclock: Я так и не разобрался в вопросе. У меня $this->mysqli->query("UPDATE `bets` SET `rate` = '$win1' WHERE `bm_id` = '$bm_id' AND `event_id` = '$event_id' AND `type` = '1'" в любом случае true возвращает. Было обновлено что-нибудь или не было.
Ну там одна запись обновляется или ноль. Если вот это условие: `bm_id` = '$bm_id' AND `event_id` = '$event_id' AND `type` = '1' не выполняется, т.е. такой строки нет, то как я понимаю должно возвращать false, а возвращает true.
if (!($this->mysqli->query("UPDATE `bets` SET `rate` = '$win1' WHERE `bm_id` = '$bm_id' AND `event_id` = '$event_id' AND `type` = '1'")))
$this->mysqli->query("INSERT INTO `bets` (`bm_id`, `event_id`, `type`, `rate`) VALUES ('$bm_id', '$event_id', '1','$win1')") or die("Не могу вставить коэффициент победы 1: ".$this->mysqli->error);