【问题标题】:Autoincrement start at x自动增量从 x 开始
【发布时间】:2020-07-29 13:10:04
【问题描述】:

对于 Nodejs 和 TypeORM,我想要一个增量列,如下所示:

@Column()
@Generated('increment')
public orderNumber: number;

有没有办法让 TypeORM 从 9000 开始计数?

【问题讨论】:

  • THIS。总之,你不能直接。您可以做的是创建一个设置自动增量主键起始值的迁移。没有标准 SQL,因此您必须搜索如何为您的数据库执行此操作。
  • PS:如果 orderNumber 是一个主键并且增量替换装饰器只用这个:@PrimaryGeneratedColumn()
  • PS:如果您的订单号必须唯一且“安全”,请使用 uuid 而不是简单的数字增量
  • orderNumber 不是主键,所以它不需要是安全的 :)

标签: node.js typescript typeorm


【解决方案1】:

在数据库中创建表时,请执行以下操作

CREATE SEQUENCE public.order_number_seq
START WITH 9000
INCREMENT BY 1
NO MINVALUE
MAXVALUE 2147483647
CACHE 1;

CREATE TABLE public."order" (
id uuid DEFAULT public.uuid_generate_v4() NOT NULL,
number integer DEFAULT nextval('public.order_number_seq'::regclass) NOT NULL,
name character varying NOT NULL,
due_date date NOT NULL);

然后在你的代码中你可以使用:

@Column()
@Generated('increment')
number?: number;

这里,我用的是 Postgresql。

【讨论】:

    猜你喜欢
    • 2017-04-12
    • 2013-04-20
    • 2013-01-06
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 2011-03-29
    相关资源
    最近更新 更多