从mysql v8.0.13开始,可以使用表达式作为字段的默认值:
DEFAULT子句中指定的默认值可以是文字常量或表达式。除一个例外,将表达式默认值括在括号内,以将其与文字常量默认值区分开。
CREATE TABLE t1 (
-- literal defaults
i INT DEFAULT 0,
c VARCHAR(10) DEFAULT '',
-- expression defaults
f FLOAT DEFAULT (RAND() * RAND()),
b BINARY(16) DEFAULT (UUID_TO_BIN(UUID())),
d DATE DEFAULT (CURRENT_DATE + INTERVAL 1 YEAR),
p POINT DEFAULT (Point(0,0)),
j JSON DEFAULT (JSON_ARRAY())
);
唯一的例外是,对于 TIMESTAMP和 DATETIME列,您可以将CURRENT_TIMESTAMP函数指定为默认函数,而不用括号括起来。