https://inasa.dev/blog/rss.xml

MySQL | UUID

2023-02-26

DEFAULT UUID()是不管用的,需要额外的括号DEFAULT (UUID())

但是使用时间戳的时候不需要DEFAULT CURRENT_TIMESTAMP

相关的函数BIN_TO_UUID(), UUID_TO_BIN()

  • 在MySQL 5.7或8.0.12及更早的版本中,不支持使用函数或表达式作为列的默认值。默认值必须是常量,不能是函数或表达式。唯一的例外是,对于TIMESTAMPDATETIME列,你可以指定CURRENT_TIMESTAMP作为默认值
  • 从MySQL 8.0.13开始,表达式现在可以用作默认值,只要它们被括在括号中。例如,你可以创建一个表,其中一个列的默认值是一个表达式:CREATE TABLE foo (b BINARY(16) DEFAULT (UUID_TO_BIN(UUID ())));
  • UUID()函数返回一个不同的值,每次调用时都会生成一个新的UUID
  • 对于CURRENT_TIMESTAMP,它是一个常量,而不是一个函数。在数据库的上下文中,当我们说CURRENT_TIMESTAMP是一个"常量",我们是指它是一个固定的标识符,总是返回当前的日期和时间。