我的数据模型包括以下节点:
model User {
id Int @id @default(autoincrement())
name String
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
body String
user User @relation(fields: [userId], references: [id])
userId Int
}我尝试删除一个用户,如下所示:
async function deleteUser(_, args) {
const { id } = args
return prisma.user.delete({
where: { id: id }
})
}但是它给出了一个错误:... The change you are trying to make would violate the required relation UserToPost between the User and Post models.
那么如何删除一个用户呢?甚至我试图先删除帖子,然后删除用户,但同样的错误再次发生。
发布于 2020-10-05 11:29:21
看起来您的表不支持CASCADE删除,并且prisma不会自动为您添加它。您必须在迁移过程中或迁移后手动更新表的定义。
因此,基本上,更改您的表定义。
ALTER TABLE public.Post
DROP CONSTRAINT Post_user_fkey,
ADD CONSTRAINT Post_user_fkey
FOREIGN KEY (user)
REFERENCES public.User(user)
ON DELETE CASCADE
ON UPDATE CASCADE;有关配置关系查询的选项,请参阅这些docs。
发布于 2021-08-07 16:59:12
这现在已经作为预览功能标志后面的预览功能发布。您可以在2.26.0的发行说明中了解到:https://github.com/prisma/prisma/releases/tag/2.26.0
可以通过在Prisma模式文件的Prisma客户端的生成器块中设置预览功能标志referentialActions来启用预览功能:
generator client {
provider = "prisma-client-js"
previewFeatures = ["referentialActions"]
}https://stackoverflow.com/questions/64077000
复制相似问题