Open1

Prismaのimplicit many-to-many (m-n) relationで削除した際の挙動調査

pontaponta

PostgreSQLを利用しています。MongoDBなど他のDBと挙動が異なる場合があるため、ご注意ください。

Schema

schema.prisma
model Post {
    id         Int        @id @default(autoincrement())
    name       String
    categories Category[]
}

model Category {
    id    Int    @id @default(autoincrement())
    name  String
    posts Post[]
}

DB

テストデータの準備

DBに手動でPostfirst postとCategoryReactを作成してconnectします。
作成したサンプルデータ

Postの削除

今回はidが1のfirst postを削除し、CategoryReactのpostsが0になることを確認します。

delete-post.js
import { PrismaClient } from "@prisma/client";

const prisma = new PrismaClient();

async function main() {
  await prisma.post.delete({
    where: { id: 1 },
  });
  console.log("done");
}

main();

削除後のDB

Postを削除したことで、Category側のPostも自動的に削除されていることが確認できました。