问答记录
PostgreSQL 复合主键关联表的级联删除配置与验证
创建于 2026/7/15更新于 2026/7/15
PostgreSQL
Foreign Key
Cascade Delete
踩坑
## 问题描述
ProjectKnowledge 是复合主键关联表,删除 Project 或 Knowledge 时,关联记录可能不会自动级联删除。
## 根本原因
复合主键关联表需要为两个外键都配置级联删除。
## 解决方案
1. 在 Prisma Schema 中为关联表的两个外键都配置 onDelete: Cascade
2. 验证实际删除行为,确保级联删除生效
3. 如果级联删除不生效,考虑使用触发器或手动删除
## 关键代码示例
```prisma
model ProjectKnowledge {
projectId String
knowledgeId String
project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)
knowledge Knowledge @relation(fields: [knowledgeId], references: [id], onDelete: Cascade)
@@id([projectId, knowledgeId])
}
```
关联知识资产
QA
资产 ID: e33590d2-a304-4e29-8094-1afbb97312a3