如何使用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
相关产品推荐
相关产品推荐

