Prisma中的autoincrement((函数直接转换为底层数据库的本地行为。所以,你的问题应该更具体地涉及你的数据库,而不是Prisma。
假设以下数据模型
model Card {
id Int @id @default(autoincrement())
name String
}
假设我在卡片表中有以下
id: 0, name: "0"
id: 1, name: "1"
出于某种原因,假设我必须将id:1更改为id:2。
id: 0, name: "0"
id: 2, name: "1"
如果我调用prisma.card.create(<some info here>...)
,我会得到这样的错误:
Unhandled Rejection (Error): GraphQL error:
Invalid `prisma.card.create()` invocation:
Unique constraint failed on the fields: (`id`)
这很有道理。但是,有没有一种方法可以让autoincrement跳过现有的id?也就是说,跳到3,这样:
id: 0, name: "0"
id: 2, name: "1"
id: 3, name: "3"
话虽如此,即使在DB级别,也很少建议更改表中ID的种子。
有一个DDL命令可以重置表的id,但不应将其用作应用程序正常生命周期的一部分。
例如,这是如何在postgres上完成的-在postgres中重置自动递增计数器