用途:当 Prisma 的查询 API 不足以表达需求时,可用 Prisma Client 的原生查询功能直接执行 SQL,适用于复杂查询、数据库特定特性或性能敏感场景。
主要能力:$queryRaw 执行 SELECT 并获取结果,可配合泛型标注返回类型;Prisma.raw() 用于动态表名或列名等标识符(不可用于用户输入);Prisma.sql 构建动态查询;Prisma.join 连接多个 SQL 片段。$executeRaw 执行 INSERT、UPDATE、DELETE 并返回受影响行数。$queryRawUnsafe 与 $executeRawUnsafe 支持完全动态查询,但需谨慎使用。
用法与安全:参数化模板(如 ${email})可安全代入用户输入,防止 SQL 注入;字符串拼接方式存在注入风险,应避免对不可信输入使用。原生查询可在 prisma.$transaction 中通过 tx 执行,保证事务一致性。
结果处理:PostgreSQL 的 COUNT 返回 BigInt,可用 Number() 转换;日期字段通常已为 Date 对象。不同数据库支持各自特性,如 PostgreSQL 的数组与 JSON 操作、MySQL 的全文检索。
限制:Unsafe 方法仅应在输入可信时使用;具体平台与收费信息暂未提供。