原生数据库类型
Prisma Migrate 将你在 Prisma 模式中定义的模型转换为数据库中的功能。
你的 数据模型中的每个¹功能都会映射到基础数据库中的相应功能。 如果你可以在 Prisma 模式中定义一个功能,那么 Prisma Migrate 就支持它。
有关 Prisma 模式功能的完整列表,请参阅
- 数据库功能矩阵,其中列出了数据库功能以及它们在 Prisma 模式中的映射关系。
- Prisma 模式参考,其中列出了所有 Prisma 模式功能,包括字段类型、属性和函数。
Prisma Migrate 还支持将每个字段映射到特定的原生类型,并且有一些方法可以在你的数据库中包含没有 Prisma 模式等效项的功能。
注意
注释和 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 模式参考文档。
按数据库提供程序进行的映射
有关按数据库提供程序组织的类型映射,请参阅
处理不支持的数据库功能
Prisma Migrate 无法自动创建在 Prisma Schema Language (PSL) 中没有等效项的数据库功能。例如,目前无法在 PSL 中定义存储过程或部分索引。但是,有一些方法可以使用 Prisma Migrate 将不支持的功能添加到你的数据库中
- 处理不支持的字段类型(如
circle
) - 处理不支持的功能,如存储过程
- 如何使用原生数据库函数