50 votes

Est-il possible de créer une colonne avec un UNIX_TIMESTAMP par défaut dans MySQL ?

J'essaie de le faire, mais il semble que MySQL ne m'y autorise pas. Existe-t-il une solution à ce problème ou dois-je toujours inclure la fonction dans mes requêtes INSERT ?

CREATE TABLE foo(
  created INT NOT NULL DEFAULT UNIX_TIMESTAMP()
)

Je connais le type TIMESTAMP qui accepte un CURRENT_TIMESTAMP par défaut, mais mon client a insisté pour utiliser le temps d'époque dans la base de données.

1voto

ktretyak Points 3284

Maintenant, avec MySQL v8+, vous pouvez le faire simplement entre parenthèses :

CREATE TABLE t1 (
  -- literal defaults
  i INT         DEFAULT 0,
  c VARCHAR(10) DEFAULT '',
  -- expression defaults
  f FLOAT       DEFAULT (RAND() * RAND()),
  b BINARY(16)  DEFAULT (UUID_TO_BIN(UUID())),
  d DATE        DEFAULT (CURRENT_DATE + INTERVAL 1 YEAR),
  p POINT       DEFAULT (Point(0,0)),
  j JSON        DEFAULT (JSON_ARRAY())
);

Voir docs

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X