温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎样生成数据库UUID主键

发布时间:2026-10-17 17:26:39 来源:亿速云 阅读:96 作者:小樊 栏目:数据库

生成数据库 UUID 主键的方法取决于你使用的数据库类型和应用层语言。下面按常见场景给你一个清晰的总结。


一、什么是 UUID 主键

UUID(Universally Unique Identifier)通常是 36 字符字符串(如 550e8400-e29b-41d4-a716-446655440000),适合分布式系统,避免 ID 冲突。


二、在数据库中直接生成 UUID 主键

1. MySQL(8.0+)

CREATE TABLE user (
    id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
    name VARCHAR(50)
);

插入时无需指定 id:

INSERT INTO user(name) VALUES ('Tom');

MySQL 5.7 及以下可用 UUID(),但不支持 DEFAULT。


2. PostgreSQL

CREATE TABLE user (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    name VARCHAR(50)
);

插入:

INSERT INTO user(name) VALUES ('Tom');

gen_random_uuid() 需要 PostgreSQL 13+,低版本可安装 uuid-ossp 扩展。


3. SQL Server

CREATE TABLE user (
    id UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWID(),
    name NVARCHAR(50)
);

4. Oracle

CREATE TABLE user_tbl (
    id RAW(16) PRIMARY KEY DEFAULT SYS_GUID(),
    name VARCHAR2(50)
);

三、在应用层生成 UUID(推荐常见做法)

Java(UUID)

import java.util.UUID;

String id = UUID.randomUUID().toString();

Python

import uuid

id = str(uuid.uuid4())

Node.js

const { v4: uuidv4 } = require('uuid');
const id = uuidv4();

然后在插入时作为主键传入。


四、UUID 主键的优缺点

✅ 优点:

  • 分布式安全
  • 不暴露数据量
  • 易于分库分表

❌ 缺点:

  • 比自增 ID 占用空间大
  • 索引性能略差(可用 UUIDv7 优化)

五、进阶建议

  • 使用 UUIDv7(时间有序,性能更好)
  • 存储用 BINARY(16) / RAW(16) 比字符串更高效
  • 高并发场景可考虑雪花算法(Snowflake)

如果你告诉我具体数据库 + 开发语言,我可以给你更精确的示例代码。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手