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

TypeORM如何通过EntitySchema创建Postgres IDENTITY列

EntitySchema 配置 Postgres IDENTITY 列方法

直接在列配置中显式指定generated值为identity,同时搭配generatedIdentity参数即可,和装饰器的参数逻辑完全对应,不需要额外引入其他配置。

正确的配置示例:

const UserSchema = new EntitySchema<User>({
    name: 'user',
    columns: {
        id: {
            type: Number,
            primary: true,
            generated: 'identity',
            generatedIdentity: 'ALWAYS'
        }
    }
})

参数说明:

  • generated: 'identity' 是Postgres等支持标准IDENTITY语法的数据库专属生成策略,常见文档里列的uuid/rowid/increment不是全部可选值,指定为identity后迁移就不会生成SERIAL类型列。
  • generatedIdentity可选值为ALWAYS和BY DEFAULT,分别对应生成GENERATED ALWAYS AS IDENTITY和GENERATED BY DEFAULT AS IDENTITY的列定义,和@PrimaryGeneratedColumn装饰器里的同名参数行为完全一致。

配置正确后,生成的迁移代码会输出标准IDENTITY列定义,效果如下:

public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(`
        CREATE TABLE "user" (
            "id" integer GENERATED ALWAYS AS IDENTITY NOT NULL,
            CONSTRAINT "PK_cace4a159ff9f2512dd42373760" PRIMARY KEY ("id")
        )
    `);
}

如果之前已经生成过使用SERIAL列的旧迁移,需要先回滚对应迁移,或者手动修改旧迁移里的列定义,避免执行迁移时出现结构冲突。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:24:24