CREATE TABLE example ( id CHAR(36) NOT NULL DEFAULT uuid(), data VARCHAR(255) NOT NULL, PRIMARY KEY (id) );
在 MySQL 5.7 以及之前的版本中,需要使用 UUID() 函数实现自增。每当新记录被创建时,会自动分配一个新的 UUID,作为该记录的唯一标识符。可以在 CREATE 语句中使用如下代码:
id CHAR(36) NOT NULL DEFAULT uuid(),
其中,id 表示该表的主键,类型为 CHAR(36),即 UUID 的字符串表示。NOT NULL 表示该列不能为空。DEFAULT 关键字指定了一个默认值为 uuid(),即每条新记录都会自动生成一个新的 UUID。
从 MySQL 8.0 开始,新增了一个名为 uuid_short() 的函数,可以用来生成短格式的 UUID。只需要将上面的代码改为以下方式即可:
id CHAR(22) NOT NULL DEFAULT uuid_short(),
其中,id 的类型改为 CHAR(22),即可生成短格式的 UUID。
总之,MySQL UUID 自增是一种非常有用的 ID 分配方式,可以在分布式系统和高并发环境下避免一些潜在的问题。基于 MySQL 的 UUID 实现方式也非常简单,只需要使用 UUID() 或 uuid_short() 函数即可。