首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在prisma2中删除关系项

如何在prisma2中删除关系项
EN

Stack Overflow用户
提问于 2020-09-26 19:13:42
回答 2查看 689关注 0票数 3

我的数据模型包括以下节点:

代码语言:javascript
复制
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
}

我尝试删除一个用户,如下所示:

代码语言:javascript
复制
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.

那么如何删除一个用户呢?甚至我试图先删除帖子,然后删除用户,但同样的错误再次发生。

EN

回答 2

Stack Overflow用户

发布于 2020-10-05 11:29:21

看起来您的表不支持CASCADE删除,并且prisma不会自动为您添加它。您必须在迁移过程中或迁移后手动更新表的定义。

因此,基本上,更改您的表定义。

代码语言:javascript
复制
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

票数 0
EN

Stack Overflow用户

发布于 2021-08-07 16:59:12

这现在已经作为预览功能标志后面的预览功能发布。您可以在2.26.0的发行说明中了解到:https://github.com/prisma/prisma/releases/tag/2.26.0

可以通过在Prisma模式文件的Prisma客户端的生成器块中设置预览功能标志referentialActions来启用预览功能:

代码语言:javascript
复制
generator client {
  provider = "prisma-client-js"
  previewFeatures = ["referentialActions"]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64077000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档