【发布时间】:2021-09-03 07:40:11
【问题描述】:
假设我有一个像这样的简单 TypeORM 实体:
import { Entity, PrimaryGeneratorColumn, Column } from 'typeorm';
@Entity()
export class Employee {
@PrimaryGeneratedColumn()
id: number;
@Column()
Name: string;
}
只要我不手动触摸数据库,一切都可以正常工作。如果我手动输入一条记录,实体将无法检查表中最后一个当前的id,并抛出错误duplicate key value violates unique constraint。
例如:
-
Employee Entity自己创建两条记录。 - 我的数据库中有两条记录,最后一条记录有
id 2 - 我在数据库中手动创建了第三条记录,它有
id 3 - 之后,当
Employee Entity运行时,它不会 = 创建另一条记录,因为它想使用id 3,但我已经手动添加了。 - 我收到错误
duplicate key value violates unique constraint - 当
Employee Entity再次运行时,它会工作,因为它会尝试在id 4下保存另一条已经可用的记录。
那么我如何确保 Employee Entity 检查数据库中的最后一个 id,然后使用增量 id 保存下一条记录?
谢谢
【问题讨论】:
-
你能把你的id从增量(数字)改成uuid吗? PS:出于安全原因,建议使用伪随机 id 而不是简单的增量。
-
嗨@CarloCorradini,谢谢你的建议。如果无论如何使用伪随机ID更好,那么我可以这样做。
-
不错!记住:
@PrimaryGeneratedColumn('uuid')