全书目录

第二十二篇:Prisma 完全指南 —— 数据翻译官事务所宇宙

第十二章:Prisma 和原生 SQL、其他 ORM 到底是什么关系

2 分钟 453 字 第 411 / 962 个阅读单元

这部分最容易被讲偏。

#Prisma 不是“取代 SQL 常识”

如果你不会:

  • 主键 / 外键
  • 索引
  • 事务隔离
  • join
  • 约束
  • 查询代价

那 Prisma 不会把这些工程事实变没。

它只是把大部分高频数据操作变得更清晰、更安全。

#Prisma 也不是“绝不写 SQL”

当你遇到这些场景时,原生 SQL 很正常:

  • 特别复杂的报表查询
  • 数据库特性非常专有
  • 需要极致手工优化
  • Prisma Client 暂时没有直接表达能力

这时你仍然可以下沉:

ts
const rows = await prisma.$queryRaw`
  SELECT id, title
  FROM "Post"
  WHERE published = true
  ORDER BY "createdAt" DESC
`;

写入类原生 SQL 也可以:

ts
const count = await prisma.$executeRaw`
  UPDATE "Post"
  SET published = true
  WHERE published = false
`;
#所以更实际的团队打法往往是
text
80% 常规 CRUD / 关系查询 / 事务
    -> Prisma Client

20% 特殊查询 / 专用优化 / 数据库特性
    -> Raw SQL
#Prisma 和传统 ORM 的关系

你可以这样粗暴但很准地理解:

工具心智 更像什么
原生 SQL 你亲自去档案馆窗口讲官方语言
传统 ORM 经纪人替你处理对象与表的映射
Prisma 一家有章程、有翻译官、有迁移档案的现代事务所

Prisma 的长处不在“它把 SQL 藏得最深”。

而在:

  • schema 驱动
  • 类型安全
  • 关系表达清晰
  • migration 纳入主工作流
  • 必要时还能退回 raw SQL