跳至内容
ID Generation

ID Generation

ID 生成

dbx 通过 IDColumn[..., ..., Marker] 在 schema 字段声明中直接配置主键 ID 策略。

Marker 类型

MarkerID 类型行为
dbx.IDAutoint64数据库自增 / identity
dbx.IDSnowflakeint64应用侧生成 Snowflake ID
dbx.IDUUIDstring应用侧生成 UUID(默认 v7)
dbx.IDUUIDv7string应用侧生成 UUIDv7
dbx.IDUUIDv4string应用侧生成 UUIDv4
dbx.IDULIDstring应用侧生成 ULID
dbx.IDKSUIDstring应用侧生成 KSUID

示例

type EventSchema struct {
    dbx.Schema[Event]
    ID   dbx.IDColumn[Event, int64, dbx.IDSnowflake] `dbx:"id,pk"`
    Name dbx.Column[Event, string]                   `dbx:"name"`
}

默认规则

  • int64 主键默认 db_auto
  • string 主键默认 uuid(v7)

生产建议

  • 单实例场景可以使用默认 node id 行为。
  • 多实例场景建议通过 dbx.WithNodeID(...) 显式配置稳定 node id。
  • 保持分层:schema 用 IDColumn 声明策略,运行时通过 DB option 配置生成器。
  • WithNodeIDWithIDGenerator 互斥,同时配置会返回错误。

迁移说明

idgen / uuidv 标签参数已移除,请在 IDColumn 上使用 marker type 配置。