從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函數指定為默認函數,而不用括號括起來。
ex:
變為