создание колонок с timestamp в MYSQL

Mar 25, 2011 16:29


Mysql по умолчанию запрещает создание колонок имеющие в default и in update значение current_timestamp.
То есть при попытке создать

`creationtime` timestamp NULL default CURRENT_TIMESTAMP ,
`lastupdate` timestamp NOT NULL on update CURRENT_TIMESTAMP,

вы получите ошибку #1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause.

Такая же ошибка вылетает, если попытаться создать 2 колонки TIMESTAMP, указав во второй on update CURRENT_TIMESTAMP.

Всё дело в том, что при создании колонок TIMESTAMP, они должны быть ненулевыми, так как если попытаться вставить туда NULL, поле будет заполнено текущим временем ("TIMESTAMP columns are NOT NULL by default, cannot contain NULL values, and assigning NULL assigns the current timestamp.")

Поэтому, для создания хотя бы двух колонок, из которых current_timestamp должна содержать вторая приходится писать вот так:

CREATE TABLE `foo`.`bar` (
`start` TIMESTAMP NOT NULL default '0000-00-00 00:00:00',
`end` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
)

Информация почерпнута из:

 Обсуждение на mysql.com

Чей-то блог.

timestamp, mysql

Previous post Next post
Up