Если вы хотите сделать это только в базе данных, вы можете написать триггер, который проверяет ваши условия и обновляет конкретные временные метки, если это необходимо , Но я предполагаю, что вы не хотите возиться с триггерами. Преимущество триггеров: вы можете получить доступ к старым и новым значениям строки без необходимости писать какой-либо PHP-код.
Во всяком случае, в случае, если вам это нужно здесь несколько примеров кода для триггера (SQL, берегитесь):
DELIMITER $$
DROP TRIGGER IF EXISTS Table1_UpdateTrigger $$
CREATE TRIGGER Table1_UpdateTrigger BEFORE UPDATE ON Table1
FOR EACH ROW BEGIN
IF OLD.column1 != NEW.column1 THEN
SET NEW.dateColumn1 = NOW();
END IF;
IF OLD.column2 != NEW.column2 THEN
SET NEW.dateColumn2 = NOW();
END IF;
END;
$$
DELIMITER ;
подставляются Table1 с вашими именами реальной таблицы, column1 и т.д. с именами реального столбца.
Другой способ - сравнить старые и новые значения в php. Например. выполните запрос, извлекая старые данные, сравните поля, которые вы хотите проверить, а затем выполните одно обновление для каждого поля, которое изменилось для установки новых временных меток.
В связи с этим, вероятно, не мешало бы взглянуть на это: http://dev.mysql.com/doc/refman/5.0/en/timestamp.html, если вы планируете использовать тип метки времени. – Christa
Так что я не могу использовать тип поля Timestamp, я должен использовать Datetime правильно? –
Да, TIMESTAMP будет перезаписывать поле при ЛЮБОЙ обновлении строки. Используйте DATETIME, если вы хотите сами это контролировать. –