在 TypeORM 中为生成的列设置基值/起始值
Set base / start value for Generated Column in TypeORM
我在构建的系统中需要一个自动递增的订单号。
我们正在尝试使用以下语法:
@Column()
@Generated('increment')
private orderNumber: number;
此方法的问题是起始值将为 1。我们需要能够设置自定义起始值,因为我们正在用现有序列替换另一个订单系统数字。
我们尝试使用 { default: 9000 }
作为列选项,但这会产生以下错误:
RequestError:无法在具有 IDENTITY 属性的列上创建默认值。 Table'order',列'orderNumber'
用老办法解决了
async function createOrderNumber() {
const startOrderNumber = 9000;
const highestOrderNumber = await orderRepository
.createQueryBuilder('order')
.select('MAX(order.orderNumber)', 'order')
.getRawOne();
const newOrderNumber =
highestOrderNumber.order < startOrderNumber ? startOrderNumber : highestOrderNumber.order + 1;
return newOrderNumber;
}
我在构建的系统中需要一个自动递增的订单号。
我们正在尝试使用以下语法:
@Column()
@Generated('increment')
private orderNumber: number;
此方法的问题是起始值将为 1。我们需要能够设置自定义起始值,因为我们正在用现有序列替换另一个订单系统数字。
我们尝试使用 { default: 9000 }
作为列选项,但这会产生以下错误:
RequestError:无法在具有 IDENTITY 属性的列上创建默认值。 Table'order',列'orderNumber'
用老办法解决了
async function createOrderNumber() {
const startOrderNumber = 9000;
const highestOrderNumber = await orderRepository
.createQueryBuilder('order')
.select('MAX(order.orderNumber)', 'order')
.getRawOne();
const newOrderNumber =
highestOrderNumber.order < startOrderNumber ? startOrderNumber : highestOrderNumber.order + 1;
return newOrderNumber;
}