MySQL-TIMESTAMP(3)的默认值

我的数据库是MySql 5.6。

我想使用CURRENT_TIMESTAMP作为类型为TIMESTAMP(3)的属性的默认值。

但是我得到了错误:

错误1067(42000):“更新”的默认值无效

我认为是因为CURRENT_TIMESTAMP仅以秒为单位。

如何将timestamp小数部分的当前时间设置为默认值?

回答:

根据文档timestampdatetime输入列:

如果TIMESTAMPDATETIME列定义在任何地方都包含显式的小数秒精度值,则在整个列定义中必须使用相同的值。

这是允许的:

CREATE TABLE t1 (

ts TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE

CURRENT_TIMESTAMP(6)

);

mysql> create table tbl_so_q23671222_1( ts timestamp(3) default now() );

ERROR 1067 (42000): Invalid default value for 'ts'

mysql> create table tbl_so_q23671222_1( ts timestamp(3) default now(3) );

Query OK, 0 rows affected (0.59 sec)

mysql> create table tbl_so_q23671222_2( ts timestamp(3) default current_timestamp );

ERROR 1067 (42000): Invalid default value for 'ts'

mysql> create table tbl_so_q23671222_2( ts timestamp(3) default current_timestamp(3) );

Query OK, 0 rows affected (0.38 sec)

mysql> desc tbl_so_q23671222_1;

+-------+--------------+------+-----+----------------------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+--------------+------+-----+----------------------+-------+

| ts | timestamp(3) | NO | | CURRENT_TIMESTAMP(3) | |

+-------+--------------+------+-----+----------------------+-------+

1 row in set (0.01 sec)

mysql> desc tbl_so_q23671222_2;

+-------+--------------+------+-----+----------------------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+--------------+------+-----+----------------------+-------+

| ts | timestamp(3) | NO | | CURRENT_TIMESTAMP(3) | |

+-------+--------------+------+-----+----------------------+-------+

1 row in set (0.01 sec)

以上是 MySQL-TIMESTAMP(3)的默认值 的全部内容, 来源链接: utcz.com/qa/435871.html

回到顶部