秒杀课程,数据库建立时,为何start_time字段执行后,会自动多出default current_timestamp on update current_timestamp?

来源:4-1 数据库设计与编码

慕运维1786514

2016-06-25 16:46

为何start_time会自己多出 default current_timestamp on update current_timestamp这句

写回答 关注

2回答

  • 键盘兔
    2016-07-13 11:24:10
    已采纳

    我查了资料 这里不应该用 timestamp

     要用 datetime

    timestamp 不能由用户插入数据的时候指定值,它要么设置了默认值永远不变,要么就只有数据创建和改变的时候由mysql更新为当前时间。

    下文来自:http://lavasoft.blog.51cto.com/62575/280284

    MYSql5的日期类型有三种:date(只有日期)、datetime(时分秒)和timestamp(时分秒)。

    一、TIMESTAMP

    1、TIMESTAMP列必须有默认值,默认值可以为'0000-00-00 00:00:00',但不能为null

    2、TIMESTAMP列不可以设置值,只能由数据库自动去修改

    3、一个表可以存在多个TIMESTAMP列,但只有一个列会根据数据更新而改变数据库系统当前值(默认是第一个TIMESTAMP列),因此,一个表中有多个TIMESTAMP列,是没有一意义的,实际上一个表只设定一个TIMESTAMP列。

    4、TIMESTAMP列的默认值是CURRENT_TIMESTAMP常量值,当记录数据发生变化的时候,TIMESTAMP列会自动将其值设定为CURRENT_TIMESTAMP。

    5、TIMESTAMP列创建后的格式是:

    `a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    语句含义是,a字段的默认值是CURRENT_TIMESTAMP,当纪录更新时候,自动将a字段的值设置为CURRENT_TIMESTAMP。

    6、另外,下面的定义从语法角度是对的,但是没有意义,因为该字段的值不可更改,永远只能为默认值。

    `b` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'。


    浣玉

    谢谢啊。

    2018-01-13 12:32:23

    共 1 条回复 >

  • 沦落人
    2016-06-30 11:41:16

    这是mysql自带的,自动默认添加的

Java高并发秒杀API之业务分析与DAO层

Java实现高并发秒杀API的第一门课,还等什么,赶快来加入吧

87424 学习 · 496 问题

查看课程

相似问题