MySQL | UUID
2023-02-26
DEFAULT UUID()
是不管用的,需要额外的括号DEFAULT (UUID())
但是使用时间戳的时候不需要DEFAULT CURRENT_TIMESTAMP
相关的函数BIN_TO_UUID()
, UUID_TO_BIN()
- 在MySQL 5.7或8.0.12及更早的版本中,不支持使用函数或表达式作为列的默认值。默认值必须是常量,不能是函数或表达式。唯一的例外是,对于
TIMESTAMP
和DATETIME
列,你可以指定CURRENT_TIMESTAMP
作为默认值 - 从MySQL 8.0.13开始,表达式现在可以用作默认值,只要它们被括在括号中。例如,你可以创建一个表,其中一个列的默认值是一个表达式:
CREATE TABLE foo (b BINARY(16) DEFAULT (UUID_TO_BIN(UUID ())));
UUID()
函数返回一个不同的值,每次调用时都会生成一个新的UUID- 对于
CURRENT_TIMESTAMP
,它是一个常量,而不是一个函数。在数据库的上下文中,当我们说CURRENT_TIMESTAMP
是一个"常量",我们是指它是一个固定的标识符,总是返回当前的日期和时间。
- https://stackoverflow.com/questions/60462208/mysql-8-0-13-default-value-as-uuid-not-working
- https://blogs.oracle.com/mysql/post/mysql-uuids
- MySQL set default id UUID - Stack Overflow
- MySQL :: MySQL 8.0 Reference Manual :: 11.2.5 Automatic Initialization and Updating for TIMESTAMP and DATETIME