在数据库中生成 UUID(Universally Unique Identifier),具体方式取决于你使用的 数据库类型。下面按常见数据库给你总结,并附上示例和注意事项。
UUID 通常是 128 位 的唯一标识符,常见格式如:
550e8400-e29b-41d4-a716-446655440000
UUID 的优点:
UUID() 函数SELECT UUID();
结果示例:
a1b2c3d4-5678-90ef-1234-56789abcdef0
CREATE TABLE users (
id CHAR(36) NOT NULL DEFAULT (UUID()),
name VARCHAR(50),
PRIMARY KEY (id)
);
⚠️ MySQL 5.7 及以下不支持函数作为默认值,需要手动插入。
INSERT INTO users (id, name)
VALUES (UUID(), 'Alice');
uuid-ossp 扩展(推荐)CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
SELECT uuid_generate_v4();
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
name VARCHAR(50)
);
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(50)
);
SYS_GUID()SELECT SYS_GUID() FROM dual;
格式:32 位不带 -
A1B2C3D4567890EF123456789ABCDEF0
CREATE TABLE users (
id RAW(16) DEFAULT SYS_GUID(),
name VARCHAR2(50)
);
NEWID()SELECT NEWID();
CREATE TABLE users (
id UNIQUEIDENTIFIER DEFAULT NEWID(),
name NVARCHAR(50)
);
| 数据库 | 推荐类型 |
|---|---|
| MySQL | CHAR(36) 或 BINARY(16) |
| PostgreSQL | UUID |
| Oracle | RAW(16) |
| SQL Server | UNIQUEIDENTIFIER |
✅ 性能建议:
BINARY(16) / RAW(16) 存储比字符串更高效UUID uuid = UUID.randomUUID();
import uuid
uuid.uuid4()
crypto.randomUUID();
✅ 推荐做法:
在应用层生成 UUID,再写入数据库,避免数据库函数差异。
| 对比项 | UUID | 自增 ID |
|---|---|---|
| 唯一性 | 全局唯一 | 仅单表唯一 |
| 分布式 | ✅ 非常适合 | ❌ 不适合 |
| 可读性 | ❌ 差 | ✅ 好 |
| 性能 | ⚠️ 索引略慢 | ✅ 快 |
数据库生成 UUID 用内置函数,分布式系统更推荐在应用层生成 UUID。
如果你告诉我:
我可以给你一个最优设计方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。