sql >> Databasteknik >  >> RDS >> Mysql

Ställ in NOW() som standardvärde för datetime datatype?

Från och med MySQL 5.6.5 kan du använda DATETIME typ med ett dynamiskt standardvärde:

CREATE TABLE foo (
    creation_time      DATETIME DEFAULT   CURRENT_TIMESTAMP,
    modification_time  DATETIME ON UPDATE CURRENT_TIMESTAMP
)

Eller till och med kombinera båda reglerna:

modification_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Referens:
http://dev.mysql .com/doc/refman/5.7/en/timestamp-initialization.html
http://optimize -this.blogspot.com/2012/04/datetime-default-now-finally-available.html

Före 5.6.5 måste du använda TIMESTAMP datatyp, som automatiskt uppdateras när posten ändras. Tyvärr, dock bara en automatiskt uppdaterad TIMESTAMP fält kan finnas per tabell.

CREATE TABLE mytable (
  mydate TIMESTAMP
)

Se:http://dev.mysql.com/doc /refman/5.1/en/create-table.html

Om du vill förhindra MySQL från att uppdatera tidsstämpelvärdet på UPDATE (så att den bara utlöses vid INSERT ) kan du ändra definitionen till:

CREATE TABLE mytable (
  mydate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)


  1. Returnera flera fält som en post i PostgreSQL med PL/pgSQL

  2. Kan inte validera, med novalidate-alternativet

  3. Datatypsprioritet i SQL Server

  4. Flera mysql INSERT-satser i en fråga php