使autoincrement跳过一些id

  • 本文关键字:id 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"
Prisma中的autoincrement((函数直接转换为底层数据库的本地行为。所以,你的问题应该更具体地涉及你的数据库,而不是Prisma。

话虽如此,即使在DB级别,也很少建议更改表中ID的种子。

有一个DDL命令可以重置表的id,但不应将其用作应用程序正常生命周期的一部分。

例如,这是如何在postgres上完成的-在postgres中重置自动递增计数器

最新更新