2015-12-10 3 views
1

У меня есть таблица с некоторыми записями. Теперь я хочу добавить к нему «созданные» и «обновленные» столбцы. Я использую запросы, подобные этомуДобавление времени создания, времени изменения в существующую таблицу в mysql

ALTER TABLE employee ADD COLUMN updated TIMESTAMP NOT NULL DEFAULT 
    CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; 

Но это создает столбцы со значением как все нули. Я хочу, чтобы это была текущая временная метка.

Пример:

mysql> select * from employee; 
+----+------+ 
| id | name | 
+----+------+ 
| 1 | a | 
| 2 | b | 
| 3 | c | 
+----+------+ 
3 rows in set (0.00 sec) 

mysql> alter table employee add column updated timestamp not null default current_timestamp on update current_timestamp; 
Query OK, 3 rows affected (0.20 sec) 
Records: 3 Duplicates: 0 Warnings: 0 

mysql> select * from employee; 
+----+------+---------------------+ 
| id | name | updated    | 
+----+------+---------------------+ 
| 1 | a | 0000-00-00 00:00:00 | 
| 2 | b | 0000-00-00 00:00:00 | 
| 3 | c | 0000-00-00 00:00:00 | 
+----+------+---------------------+ 
3 rows in set (0.00 sec) 

mysql> update employee set name='aa' where id='1'; 
Query OK, 1 row affected (0.05 sec) 
Rows matched: 1 Changed: 1 Warnings: 0 

mysql> select * from employee; 
+----+------+---------------------+ 
| id | name | updated    | 
+----+------+---------------------+ 
| 1 | aa | 2015-12-10 15:41:44 | 
| 2 | b | 0000-00-00 00:00:00 | 
| 3 | c | 0000-00-00 00:00:00 | 
+----+------+---------------------+ 
3 rows in set (0.00 sec) 

mysql> alter table employee add column city varchar(10) not null default 'banglore'; 
Query OK, 3 rows affected (0.17 sec) 
Records: 3 Duplicates: 0 Warnings: 0 

mysql> select * from employee; 
+----+------+---------------------+----------+ 
| id | name | updated    | city  | 
+----+------+---------------------+----------+ 
| 1 | aa | 2015-12-10 15:41:44 | banglore | 
| 2 | b | 0000-00-00 00:00:00 | banglore | 
| 3 | c | 0000-00-00 00:00:00 | banglore | 
+----+------+---------------------+----------+ 
3 rows in set (0.00 sec) 

Похоже DEFAULT CURRENT_TIMESTAMP не работает

+0

отлично работает на моей машине (F23 с 'MySQL Ver 15.1 Distrib 10.0.21-MariaDB, для Linux (x86_64) используя readline 5.1'). Какую версию MySQL вы используете? – Mureinik

+0

mysql Ver 14.14 Распространение 5.5.44 для debian-linux-gnu (x86_64) с использованием readline 6.3 – Turtle

+0

Руководство (для вашей версии) охватывает все это довольно подробно – Strawberry

ответ

0
ALTER TABLE `employee` ADD `COLUMN` 
TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP