Наличие столбца «Дата создания» со значением по умолчанию при создании таблицы - PullRequest
1 голос
/ 08 июля 2019

Я хочу иметь столбец, в котором будет храниться дата создания строки. Я использую php и mysql, но я не думаю, что это имеет значение.

Я искал серию ответов об этом, но все они, похоже, предназначены для обновления существующей таблицы. Ну, конечно, есть один для того, что я ищу, так как это довольно простой вопрос, но я еще не нашел его. Я пробовал что-то с DEFAULT, CONSTRAINT, но ни один из них не позволяет мне создать таблицу после добавления в мой код. У вас может возникнуть ощущение, что я не очень хорошо разбираюсь в SQL, и вы не ошибетесь.

Это создает таблицу, подскажите, что добавить?

CREATE TABLE IF NOT EXISTS artwork (
  id_artwork int(4) NOT NULL AUTO_INCREMENT,
  title varchar(50) NOT NULL,
  creationDate DateTime(3),
  CONSTRAINT PK_artwork PRIMARY KEY (id_artwork)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Я попробовал следующее безуспешно:

creationDate DateTime(3) DEFAULT GETDATE()
creationDate DateTime(3) DEFAULT (GETDATE())
creationDate DATETIME(3) DEFAULT (CURRENT_TIMESTAMP)

MySQL версия: 5.7.23 - MySQL Community Server (GPL)

1 Ответ

2 голосов
/ 08 июля 2019

Из документации MySQL об инициализации с использованием DATETIME :

Если определение столбца TIMESTAMP или DATETIME включает в себя явное значение точности долей секунды, то везде должно использоваться одно и то же значениеопределение столбца.

Это означает, что нам придется продвигать вашу точность вперед.Я смог заставить его работать на SQL Fiddle :

CREATE TABLE IF NOT EXISTS artwork (
  id_artwork int(4) NOT NULL AUTO_INCREMENT,
  title varchar(50) NOT NULL,
  creationDate DateTime(3) DEFAULT CURRENT_TIMESTAMP(3),
  CONSTRAINT PK_artwork PRIMARY KEY (id_artwork)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...