2013-10-04 3 views
2

В таблице MySQL мы не можем иметь метку времени с двумя столбцами со значениями по умолчанию current_timestamp.MySQL column 'not null default current_timestamp'

SO в любом случае имеет 2 или более столбца в одной таблице со значением по умолчанию - текущее время. Это можно сделать легко в Postgres, теперь().

Большое спасибо.

+1

Зачем вам это нужно. –

+0

таблица создала, изменила столбцы. На всякий случай, я хочу, чтобы все они имели значения по умолчанию, это текущее время, когда они изменены. – novo

ответ

2

, если столбец временной метки определяется как NOT NULL MySQL хранит текущую временную метку в столбце, если вы присвоите ей значение NULL

CREATE TABLE `t1` (
    `name` varchar(100) DEFAULT NULL, 
    `created` timestamp NOT NULL DEFAULT 0, 
    `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
); 

INSERT INTO `t1` SET name='abc', created=null; 
mysql> select * from t1; 
+------+---------------------+---------------------+ 
| name | created    | updated    | 
+------+---------------------+---------------------+ 
| abc | 2013-10-04 10:48:03 | 2013-10-04 10:48:03 | 
+------+---------------------+---------------------+ 

UPDATE `t1` SET name='abc2' WHERE name = 'abc'; 
mysql> select * from t1; 
+------+---------------------+---------------------+ 
| name | created    | updated    | 
+------+---------------------+---------------------+ 
| abc2 | 2013-10-04 10:48:03 | 2013-10-04 11:42:04 | 
+------+---------------------+---------------------+ 
+1

ВНИМАНИЕ: Я не мог поверить, что 'DEFAULT 0' означает« сейчас », а на моей установке это не так. Я получаю created = "0000-00-00 00:00:00". Предположительно, это изменение конфигурации. –

+0

КОРРЕКЦИЯ: он полагается на вложение 'null' для' created'. Если вы не укажете его, вы получите дату 0. «NOT NULL», кажется, игнорируется независимо от того, что вы делаете. Bizarre. –

0

Не уверен, что это сработает, но может быть установлено значение по умолчанию current_timestamp по умолчанию FieldA и по умолчанию для FieldB будет полевой (если требуется формула FieldA + 0 дней).

Create Table Tbl1 
(
    ... 
    , TS1 TimeStamp Default Current_TimeStamp 
    , TS2 TimeStamp Default TS1 
    ... 
); 
+0

Я не уверен, что понимаю, что вы имеете в виду. Можете ли вы привести примерные коды. Спасибо – novo

+0

Извините, что у меня нет MySql, но думал по этим строкам (см. Править) – asantaballa

Смежные вопросы