秒殺課程,數(shù)據(jù)庫建立時,為何start_time字段執(zhí)行后,會自動多出default current_timestamp on update current_timestamp?
為何start_time會自己多出 default current_timestamp on update current_timestamp這句
為何start_time會自己多出 default current_timestamp on update current_timestamp這句
舉報
2016-07-13
我查了資料 這里不應(yīng)該用?timestamp
?要用?datetime
timestamp 不能由用戶插入數(shù)據(jù)的時候指定值,它要么設(shè)置了默認值永遠不變,要么就只有數(shù)據(jù)創(chuàng)建和改變的時候由mysql更新為當(dāng)前時間。
下文來自:http://lavasoft.blog.51cto.com/62575/280284
MYSql5的日期類型有三種:date(只有日期)、datetime(時分秒)和timestamp(時分秒)。
一、TIMESTAMP
1、TIMESTAMP列必須有默認值,默認值可以為'0000-00-00 00:00:00',但不能為null
2、TIMESTAMP列不可以設(shè)置值,只能由數(shù)據(jù)庫自動去修改
3、一個表可以存在多個TIMESTAMP列,但只有一個列會根據(jù)數(shù)據(jù)更新而改變數(shù)據(jù)庫系統(tǒng)當(dāng)前值(默認是第一個TIMESTAMP列),因此,一個表中有多個TIMESTAMP列,是沒有一意義的,實際上一個表只設(shè)定一個TIMESTAMP列。
4、TIMESTAMP列的默認值是CURRENT_TIMESTAMP常量值,當(dāng)記錄數(shù)據(jù)發(fā)生變化的時候,TIMESTAMP列會自動將其值設(shè)定為CURRENT_TIMESTAMP。
5、TIMESTAMP列創(chuàng)建后的格式是:
`a`?timestamp?NOT?NULL?DEFAULT?CURRENT_TIMESTAMP?ON?UPDATE?CURRENT_TIMESTAMP,
語句含義是,a字段的默認值是CURRENT_TIMESTAMP,當(dāng)紀(jì)錄更新時候,自動將a字段的值設(shè)置為CURRENT_TIMESTAMP。
6、另外,下面的定義從語法角度是對的,但是沒有意義,因為該字段的值不可更改,永遠只能為默認值。
`b`?timestamp?NOT?NULL?DEFAULT?'0000-00-00 00:00:00'。
2016-06-30
這是mysql自帶的,自動默認添加的