使自动增量跳过一些 id
make autoincrement skip some ids
假设数据模型如下
model Card {
id Int @id @default(autoincrement())
name String
}
然后假设我的卡片table中有以下内容
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`)
这很有道理。但是,有没有办法让自动增量跳过现有的 id?也就是说,跳到 3 这样:
id: 0, name: "0"
id: 2, name: "1"
id: 3, name: "3"
Prisma 中的 autoincrement() 函数直接转换为底层数据库的本机行为。因此,您的问题应该更具体地针对您的数据库,而不是关于 Prisma。
话虽如此,即使在数据库级别,也很少建议更改 table 中 ID 的种子。
有一个 DDL 命令可以重置 table 的 ID,但您不应将其用作应用程序正常生命周期的一部分。
例如,这是在 postgres 上的做法 - Reset auto increment counter in postgres
假设数据模型如下
model Card {
id Int @id @default(autoincrement())
name String
}
然后假设我的卡片table中有以下内容
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`)
这很有道理。但是,有没有办法让自动增量跳过现有的 id?也就是说,跳到 3 这样:
id: 0, name: "0"
id: 2, name: "1"
id: 3, name: "3"
Prisma 中的 autoincrement() 函数直接转换为底层数据库的本机行为。因此,您的问题应该更具体地针对您的数据库,而不是关于 Prisma。
话虽如此,即使在数据库级别,也很少建议更改 table 中 ID 的种子。
有一个 DDL 命令可以重置 table 的 ID,但您不应将其用作应用程序正常生命周期的一部分。
例如,这是在 postgres 上的做法 - Reset auto increment counter in postgres