当我尝试删除与其他表有关系的任何公司时,我正在使用 PostgreSQL 和 GraphQL。它显示 GraphQL 错误:
Posted
技术标签:
【中文标题】当我尝试删除与其他表有关系的任何公司时,我正在使用 PostgreSQL 和 GraphQL。它显示 GraphQL 错误:【英文标题】:I am using PostgreSQL with GraphQL when I try to delete any company that has relation with other tables. it shows GraphQL error: 【发布时间】:2020-06-16 21:27:52 【问题描述】:表格架构
type Company
id: ID! @unique
name: String!
users: [CompanyUser!]! @relation(name: "CompanyUserToCompany")
areas: [Area!]! @relation(name: "Company_areas")
positions: [Position!]! @relation(name: "Company_positions", onDelete: CASCADE)
type Position
id: ID! @unique
name: String!
users: [CompanyUser!]! @relation(name: "Position_company_user")
company: Company! @relation(name: "Position_company", onDelete: CASCADE)
显示此 GraphQL 错误
错误:GraphQL 错误:您尝试进行的更改将违反 Company 和 Position 之间所需的关系“Position_company”
【问题讨论】:
【参考方案1】:如果您使用的是 prisma2,我想我的回答可以帮助您。
不要按公司删除项目。
(例如:prisma.company.delete(where: ~ )
)
按位置删除项目。
(例如prisma.position.delete(where:company:id:companyId)
)
如果更改字段属性不起作用并且可以,则将公司字段设为可为空(不需要)。然后,先删除公司,再删除职位(因为我猜你想要级联,对吧?)
别忘了使用 await!
我以这种方式解决了这个问题。但我不确定onDelete:CASCADE
的情况。
我真的希望 prisma2 尽快发布级联..!
【讨论】:
以上是关于当我尝试删除与其他表有关系的任何公司时,我正在使用 PostgreSQL 和 GraphQL。它显示 GraphQL 错误:的主要内容,如果未能解决你的问题,请参考以下文章