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

如何使用node-pg-migrate定义INT GENERATED ALWAYS AS IDENTITY列

node-pg-migrate 实现 GENERATED ALWAYS AS IDENTITY 列的方法

有两种常用的实现方式,你可以根据自身需求选择:

方式一:使用内置列属性配置(推荐)

node-pg-migrate 的 createTable 方法支持通过 identity 配置项直接定义 identity 列,你可以指定生成策略为 ALWAYS,示例迁移文件代码如下:

exports.up = pgm => {
  pgm.createTable('color', {
    color_id: {
      type: 'INT',
      identity: {
        always: true,
        start: 1, // 可选配置,指定序列起始值
        increment: 1 // 可选配置,指定序列步长
      }
      // 如果你需要将该列设为主键,可以额外加 primaryKey: true 配置
    },
    color_name: {
      type: 'VARCHAR',
      notNull: true
    }
  })
};

exports.down = pgm => {
  pgm.dropTable('color')
};

上述配置会直接生成你需要的 INT GENERATED ALWAYS AS IDENTITY 语法,无需额外编写原生SQL。

方式二:使用原生SQL兜底

如果你有更复杂的自定义需求,也可以直接调用 pgm.sql 方法执行原生建表语句,和你预期的SQL逻辑完全一致:

exports.up = pgm => {
  pgm.sql(`
    CREATE TABLE color (
        color_id INT GENERATED ALWAYS AS IDENTITY,
        color_name VARCHAR NOT NULL
    );
  `)
};

exports.down = pgm => {
  pgm.sql(`DROP TABLE color;`)
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:54:05