数据库功能矩阵
此页面概述了 Prisma ORM 支持的数据库所提供的功能。此外,它还解释了如何在 Prisma ORM 中使用这些功能,并提供了进一步文档的链接。
关系型数据库功能
本节描述了 Prisma ORM 当前支持的关系型数据库中的数据库功能。Prisma schema 列指示如何在 Prisma schema 中表示某个功能,并链接到其文档。请注意,即使数据库功能可能尚未在 Prisma schema 中表示,也可以在 Prisma Client 中使用它们。
注意
这些功能仅适用于关系型数据库。对 NoSQL 数据库(如 MongoDB)的支持功能,可在下方找到。
约束
| 约束 | 支持 | Prisma schema | Prisma Client | Prisma Migrate |
|---|---|---|---|---|
主键(PRIMARY KEY) | ✔️ | @id 和 @@id | ✔️ | ✔️ |
外键(FOREIGN KEY) | ✔️ | 关系字段 | ✔️ | ✔️ |
唯一(UNIQUE) | ✔️* | @unique 和 @@unique | ✔️ | ✔️ |
检查(CHECK) | ✔️† | 暂不支持 | ✔️ | 暂不支持 |
非空(NOT NULL) | ✔️ | ? | ✔️ | ✔️ |
默认(DEFAULT) | ✔️ | @default | ✔️ | ✔️ |
排除(EXCLUDE) | ✔️‡ | 暂不支持 | ✔️ | 暂不支持 |
* 在 Microsoft SQL Server 中使用
UNIQUE约束时需要注意 † 仅在 MySQL 版本 8 及更高版本中支持。‡ 仅在 PostgreSQL 中支持。
引用操作(外键引用的删除和更新行为)
| 删除行为 | 支持 | Prisma schema | Prisma Client | Prisma Migrate |
|---|---|---|---|---|
级联(CASCADE) | ✔️ | ✔️ | ✔️ | ✔️ |
限制(RESTRICT) | ✔️* | ✔️ | ✔️ | ✔️ |
无操作(NO ACTION) | ✔️ | ✔️ | ✔️ | ✔️ |
设置默认值(SET DEFAULT) | ✔️ | ✔️ | ✔️ | ✔️ |
设置为空(SET NULL) | ✔️ | ✔️ | ✔️ | ✔️ |
* Microsoft SQL Server 不支持
RESTRICT。
索引
| 索引 | 支持 | Prisma schema | Prisma Client | Prisma Migrate |
|---|---|---|---|---|
唯一(UNIQUE) | ✔️ | @unique 和 @@unique | ✔️ | ✔️ |
使用(USING) | 仅限 PostgreSQL | 类型 | ✔️ | ✔️ |
条件(WHERE) | ✔️ | 暂不支持 | ✔️ | 暂不支持 |
(表达式) | ✔️ | 暂不支持 | ✔️ | 暂不支持 |
包含(INCLUDE) | 仅限 PostgreSQL 和 Microsoft SQL Server | 暂不支持 | ✔️ | 暂不支持 |
通过 USING 指定算法
| 索引类型(算法) | 支持 | Prisma schema | Prisma Client | Prisma Migrate |
|---|---|---|---|---|
| B-树(B-tree) | ✔️ | ✔️† | ✔️ | 暂不支持 |
| 哈希(Hash) | ✔️ | ✔️† | ✔️ | 暂不支持 |
| GiST | ✔️* | ✔️† | ✔️* | 暂不支持 |
| GIN | ✔️* | ✔️† | ✔️* | 暂不支持 |
| BRIN | ✔️* | ✔️† | ✔️* | 暂不支持 |
| SP-GiST | ✔️* | ✔️† | ✔️* | 暂不支持 |
- * 不支持 MySQL 和 SQLite
- † 仅在 Prisma ORM
4.0.0及更高版本中与 PostgreSQL 连接器一起使用。
杂项
| 功能 | 支持 | Prisma schema | Prisma Client | Prisma Migrate |
|---|---|---|---|---|
| 自增 ID | ✔️ | autoincrement() | ✔️ | ✔️ |
| 数组 | 仅限 PostgreSQL | [] | ✔️ | ✔️ |
| 枚举 | ✔️*† | enum | ✔️ | ✔️ |
| 原生数据库类型 | ✔️ | ✔️ | ✔️ | 暂不支持 |
| SQL 视图 | ✔️ | 暂不支持 | 暂不支持 | 暂不支持 |
| JSON 支持 | ✔️† | ✔️ | ✔️ | ✔️ |
| 模糊/短语全文搜索 | ✔️‡ | 暂不支持 | 暂不支持 | 暂不支持 |
| 表继承 | 仅限 PostgreSQL 和 Microsoft SQL Server | 暂不支持 | ✔️ | 暂不支持 |
| 授权和用户管理 | ✔️‡ | 暂不支持 | 暂不支持 | 暂不支持 |
- * Microsoft SQL Server 不支持
- † 从 Prisma ORM 6.2.0 开始,SQLite 支持 JSON 和 Enum 类型。
- ‡ SQLite 不支持
NoSQL 数据库功能
本节描述了 Prisma ORM 当前支持的 NoSQL 数据库中的数据库功能。
MongoDB
下表列出了常见的 MongoDB 功能,并描述了 Prisma ORM 提供的支持级别
| 功能 | Prisma ORM 支持 | 备注 |
|---|---|---|
| 嵌入式文档 | ✔️ | |
| 事务 | ✔️ | |
| 索引 | ✔️ 有限制 | 索引只能在它们引用的字段包含至少一些数据时才能进行内省。 |
| 自增 ID | 否 | |
| 复合 ID | 否 | MongoDB 不支持复合 ID (@@id) |
生成的 ObjectId | ✔️ | 请参阅:为 MongoDB 定义 ID |
| 数组 | ✔️ | |
| 枚举 | ✔️ | 在 Prisma ORM 级别实现 |
| 原生数据库类型 | ✔️ | 请参阅:字段映射参考 |
| JSON 支持 | ✔️ | 高级 Json 字段过滤尚不支持。 |
| DBref | 否 | |
| 变更流 | 否 | |
| 直接访问聚合管道 | 否 |