postgresql 如何在Prisma中只删除那些在其他表中没有任何关系的行?

rjee0c15  于 2023-05-06  发布在  PostgreSQL
关注(0)|答案(1)|浏览(103)

我有一个表,在某些情况下可以在其他表中有关系,但不是所有的行都有关系。我如何只删除那些在Prisma中的任何其他表中没有任何关系的行?

lfapxunr

lfapxunr1#

您可以将deleteMany函数与检查相关记录是否缺失的筛选器结合使用。例如:
假设您有以下模式:

model Parent {
  id        Int      @id @default(autoincrement())
  children  Child[]
}

model Child {
  id        Int      @id @default(autoincrement())
  parentId  Int
  parent    Parent   @relation(fields: [parentId], references: [id])
}

要删除没有相关子记录的父记录,您可以按以下方式执行操作:

const deletedParents = await prisma.parent.deleteMany({
  where: {
    children: {
      none: {}, // This filter matches records with no related children
    },
  },
});

这将删除所有没有关联子记录的父记录。

相关问题