You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MySQL中如何自动生成UUID格式的用户主键ID?

在MySQL中自动生成UUID作为用户主键的简便方法

嘿,这个需求完全可以在MySQL里轻松实现,根本不需要额外写脚本生成字符串再插入!MySQL原生就支持UUID相关的函数,能帮你自动生成符合格式的唯一ID作为主键。

下面给你最常用的简便方案:

1. 用UUID()函数设置字段默认值(首推方案)

MySQL的UUID()函数会直接生成你需要的标准格式UUID(比如246b6fe6-d1f2-4961-ae07-08f3057e0a13),你只需要在创建表的时候给user_id字段设置这个默认值,插入数据时就会自动填充,不用手动指定。

创建表的示例代码:

CREATE TABLE Users (
    user_id CHAR(36) PRIMARY KEY DEFAULT UUID(),
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  • 选择CHAR(36)是因为标准UUID刚好是36个字符(包含4个连字符),长度固定,用这个类型最匹配。
  • 插入数据时,你完全不用管user_id,直接插入其他字段即可:
INSERT INTO Users (username, email) VALUES ('lisa_smith', 'lisa@example.com');

查询这行数据,就能看到自动生成的user_id了。

2. 关于性能的小提示

要注意的是,字符串类型的主键(UUID属于字符串)相比整数主键,在索引性能上会稍差一些,毕竟字符串的比较和存储成本更高。但如果你的业务需要分布式环境下的全局唯一ID,UUID的优势很明显——不用依赖自增ID的全局序列,多节点插入也不会冲突。

如果你的场景对性能要求极高,也可以考虑用UUID_SHORT()函数生成短整数型的UUID,但它的格式不是你要的标准字符串UUID,所以如果业务明确需要标准格式,还是优先用第一种方案。

内容的提问来源于stack exchange,提问作者danny26b

火山引擎 最新活动