2015-12-30 10 views
0

У меня возникли проблемы с обновлением поля таблицы после обновления другого столбца той же таблицы. Я знаю, что я не могу выполнить триггер в той же таблице, которую я обновляю, но мне нужно найти трюк, чтобы сделать это.Обновление MySQL TRIGGER в той же таблице

Например, мой стол:

ParentName | Age | Update_date 

John   12 2014-12-01 
Eric   23 2014-4-01 
Jack   32 2014-5-01 
Jill   33 2014-2-01 

после обновления age, мне нужно обновить update_date, я моя реальная ситуация я не могу сделать это непосредственно из запроса обновления, потому что я хочу, это правило работая не в зависимости от того, как я обновляю таблицу.

Я пытаюсь сделать это с помощью хранимых процедур, но я их не очень хорошо знаю.

У кого-то есть идеи или могут объяснить мне, как это сделать с помощью процедуры, используемой для обработки?

+0

Вы можете использовать, прежде чем триггер обновления и если старая дата не равна новую дату, то установите 'Update_date' как' CurDate() ' –

+0

с триггером before_update он дает мне эту ошибку: Не удается обновить таблицу «parent_table» в хранимой функции/триггере, поскольку он уже используется оператором, который вызывается этой хранимой функцией/триггером –

+0

, вы можете изменить структуру таблицы. поместите значение CURRENT_DATE ON UPDATE в значение по умолчанию. всякий раз, когда ваша строка обновляется, тогда ее значение изменится на текущую дату. таким образом, нет требования для триггера, а также запроса на обновление –

ответ

0

Ваш триггер может быть так:

DELIMITER // 

CREATE TRIGGER persons_updt BEFORE UPDATE ON persons 
FOR EACH ROW 
    IF (NEW.age <=> OLD.age) THEN SET NEW.Update_date=current_date(); 
END IF// 

DELIMITER ; 

Здесь я использую . См. Скрипку here.