MySQL中的時間戳是指一個包含日期和時間的數(shù)值,可以用于記錄數(shù)據(jù)庫中的數(shù)據(jù)創(chuàng)建和修改時間。對于一個表中的行,我們可以為某些列指定時間戳作為默認(rèn)值,這樣當(dāng)向該表插入數(shù)據(jù)時,如果該列沒有明確指定值,就會自動設(shè)置為當(dāng)前時間戳。
CREATE TABLE example ( id int NOT NULL PRIMARY KEY AUTO_INCREMENT, name varchar(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
在上面的例子中,我們創(chuàng)建了一個名為example
的表,其中包含了四個列:id
、name
、created_at
和updated_at
。在創(chuàng)建這兩個時間戳列時,我們使用了默認(rèn)值來指定它們的初始值。
created_at
列中使用的默認(rèn)值CURRENT_TIMESTAMP
表示當(dāng)前時間戳,如果我們向該表中插入一行數(shù)據(jù),并未對created_at
明確指定值,那么這個列就會自動設(shè)置為當(dāng)前時間戳值。
而updated_at
列中使用的默認(rèn)值CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
則稍微有點復(fù)雜。它的意思是,當(dāng)該行數(shù)據(jù)被更新時,updated_at
列的值將自動更新為當(dāng)前時間戳。例如,如果我們更新了該表中某一行的name
列的值,那么updated_at
列的值也將被更新為當(dāng)前時間戳。
需要注意的是,在MySQL 5.6.5及以前的版本中,如果某一行數(shù)據(jù)的任意一個列被更新,它的時間戳列將會被更新。但是,從MySQL 5.6.5開始,可以使用ON UPDATE
子句來指定僅在特定列更新時才更新時間戳列。