You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CockroachDB中用Fluent Migrator自动生成unique_rowid

在Fluent Migrator中为CockroachDB的Int64列设置unique_rowid()默认值

可以实现,核心思路是直接传入CockroachDB的unique_rowid()函数作为默认值,而非依赖Fluent Migrator内置的SystemMethods(这些方法是通用数据库适配的,没有封装CockroachDB专属函数)。

有两种常用实现方式:

1. 通过表构建器直接指定默认值

直接将unique_rowid()作为字符串传入WithDefaultValue方法,Fluent Migrator会将其解析为原生SQL函数,而非字符串常量:

Create.Table("x")
      .WithColumn("version")
      .AsInt64()
      .NotNullable()
      .WithDefaultValue("unique_rowid()");

2. 执行原生SQL语句

如果表结构复杂,或者担心语法解析问题,直接执行原生创建表语句更稳妥:

Execute.Sql("CREATE TABLE x (version INT NOT NULL DEFAULT unique_rowid())");

要是给已存在的列添加默认值,用Alter语法:

Alter.Table("x")
     .AlterColumn("version")
     .AsInt64()
     .NotNullable()
     .WithDefaultValue("unique_rowid()");

你之前用SystemMethods.NewGuid失败,是因为它会生成GUID类型的默认值,和Int64列类型不匹配。上面的方法直接调用CockroachDB专属函数,完全适配Int64类型。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 19:22:02