【问题标题】:in mysql8 why does DATE DEFAULT CURRENT_DATE need parentheses around CURRENT_DATE?在 mysql8 中,为什么 DATE DEFAULT CURRENT_DATE 需要在 CURRENT_DATE 周围加上括号?
【发布时间】:2021-12-21 02:12:14
【问题描述】:

从 mysql8 开始,这是合法的:

CREATE TABLE t (d DATETIME DEFAULT CURRENT_TIMESTAMP);

这是合法的:

CREATE TABLE t (d DATE DEFAULT (CURRENT_DATE));

那为什么这是非法的?

CREATE TABLE t (d DATE DEFAULT CURRENT_DATE);

导致

查询中的错误 (1064):第 1 行的“CURRENT_DATE)”附近的语法错误

【问题讨论】:

    标签: mysql sql default create-table


    【解决方案1】:

    请参阅this for more information

    这很可能是您在问题中所指的:

    在 DEFAULT 子句中指定的默认值可以是文字 常量或表达式。除了一个例外,请附上表达式 括号内的默认值以将它们与文字区分开来 常量默认值。

    [...]

    例外情况是,对于 TIMESTAMP 和 DATETIME 列,您可以 将 CURRENT_TIMESTAMP 函数指定为默认值,不带 用括号括起来。

    【讨论】:

    • 文字常量和表达式什么时候冲突?
    猜你喜欢
    • 2018-06-24
    • 2015-11-01
    • 2020-08-02
    • 2012-02-03
    • 2013-04-07
    • 2021-02-28
    相关资源
    最近更新 更多