Я должен отследить дату и время, пользователь был создан в моей mysql базе данных. У меня есть столбец, названный 'созданным' и тип данных как МЕТКА ВРЕМЕНИ.
Проблема - это, когда пользователь изменяет их пароль или другую информацию изменения значения МЕТКИ ВРЕМЕНИ. Как я могу установить это для не изменения????
Вы можете просто установить его предложение по умолчанию на CURRENT_TIMESTAMP
(как @ Mark и @ dcp , отмеченные в других ответах):
CREATE TABLE your_table (
...
`created_timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Test case:
CREATE TABLE tb (`a` int, `c` TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.04 sec)
INSERT INTO tb (a) VALUES (1);
Query OK, 1 row affected (0.01 sec)
SELECT * FROM tb;
+------+---------------------+
| a | c |
+------+---------------------+
| 1 | 2010-06-09 23:31:16 |
+------+---------------------+
1 row in set (0.00 sec)
UPDATE tb SET a = 5;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
SELECT * FROM tb;
+------+---------------------+
| a | c |
+------+---------------------+
| 5 | 2010-06-09 23:31:16 |
+------+---------------------+
1 row in set (0.00 sec)
EDIT:
В моем первоначальном ответе я предложил использовать столбец DATETIME
с предложением DEFAULT
, установленным на CURRENT_TIMESTAMP
. Однако это возможно только при использовании типа данных TIMESTAMP
, как указано в документации :
Предложение значения
DEFAULT
в спецификации типа данных указывает значение по умолчанию значение для столбца. За одним исключением значение по умолчанию должно быть постоянным; это не может быть функцией или выражением. Это означает, например, что вы не можете установить значение по умолчанию для столбца даты как значение функции, такой какNOW ()
илиCURRENT_DATE
. Исключением является то, что вы можете указатьCURRENT_TIMESTAMP
как значение по умолчанию для столбцаTIMESTAMP
.
Похоже, столбец временных меток настроен неправильно:
*
Auto-initialization and auto-update:
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
*
Auto-initialization only:
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
*
Auto-update only:
ts TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP
*
Neither:
ts TIMESTAMP DEFAULT 0
При создании таблицы вы должны опустить ON UPDATE
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
должно быть
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
Используйте столбец времени. Временная метка автоматически обновляется.
Измените его на DEFAULT CURRENT_TIMESTAMP
, иначе он будет автообновляться. Из руководства:
В операторе CREATE TABLE первый столбец TIMESTAMP может быть объявлен любым из следующих способов:
С обоими пунктами DEFAULT CURRENT_TIMESTAMP и ON UPDATE CURRENT_TIMESTAMP, столбец имеет текущую временную метку в качестве значения по умолчанию и автоматически обновляется.
Если нет ни DEFAULT, ни ON UPDATE, это то же самое, что и DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP.
При наличии условия DEFAULT CURRENT_TIMESTAMP и отсутствии условия ON UPDATE столбец имеет текущую временную метку в качестве значения по умолчанию, но не обновляется автоматически.
Подчеркивание мое.
В разделе атрибутов отключите "on update CURRENT_TIMESTAMP".
date ()
. обновить
, когда пользователь изменяет свою информацию.