原生数据库类型
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
) - 处理不支持的功能,如存储过程
- 如何使用原生数据库函数