原生数据库类型
Prisma Migrate 将您在 Prisma schema 中定义的模型转换为数据库中的特性。
您数据模型中的每一个¹特性都对应于底层数据库中的一个特性。如果您可以在 Prisma schema 中定义某个特性,那么它就受 Prisma Migrate 支持。
有关 Prisma schema 特性的完整列表,请参阅
- 数据库特性矩阵,查看数据库特性及其在 Prisma schema 中的对应关系。
- Prisma schema 参考,查看所有 Prisma schema 特性列表,包括字段类型、属性和函数。
Prisma Migrate 还支持将每个字段映射到特定的原生类型,并且有一些方法可以在数据库中包含 Prisma schema 中没有对应项的特性。
注意
注释和 Prisma ORM 级别的函数(uuid()
和 cuid()
)不映射到数据库特性。
将字段映射到特定的原生类型
每个 Prisma ORM 类型都默认映射到底层数据库类型——例如,PostgreSQL 连接器默认将 String
映射到 text
。原生数据库类型属性决定了在数据库中应该创建哪个特定的原生类型。
信息
注意:有些 Prisma ORM 类型只映射到一种原生类型。
在以下示例中,name
和 title
字段具有 @db.VarChar(X)
类型属性
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
name String @db.VarChar(200)
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String @db.VarChar(150)
published Boolean @default(true)
authorId Int
author User @relation(fields: [authorId], references: [id])
}
Prisma Migrate 在创建迁移时会使用指定的类型
-- CreateTable
CREATE TABLE "User" (
"id" SERIAL,
"name" VARCHAR(200) NOT NULL,
PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Post" (
"id" SERIAL,
"title" VARCHAR(150) NOT NULL,
"published" BOOLEAN NOT NULL DEFAULT true,
"authorId" INTEGER NOT NULL,
PRIMARY KEY ("id")
);
-- AddForeignKey
ALTER TABLE "Post" ADD FOREIGN KEY("authorId")REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
按 Prisma ORM 类型划分的映射
有关按 Prisma ORM 类型划分的类型映射,请参阅 Prisma schema 参考文档。
按数据库提供者划分的映射
有关按数据库提供者划分的类型映射,请参阅
处理不受支持的数据库特性
Prisma Migrate 无法自动创建在 Prisma Schema Language (PSL) 中没有对应项的数据库特性。例如,目前无法在 PSL 中定义存储过程或部分索引。但是,有一些方法可以使用 Prisma Migrate 将不受支持的特性添加到您的数据库中
- 处理不受支持的字段类型(如
circle
) - 处理不受支持的特性,如存储过程
- 如何使用原生数据库函数