跳到主要内容

原生数据库类型

Prisma Migrate 将您在 Prisma schema 中定义的模型转换为数据库中的特性。

A diagram that shows a Prisma schema on the left (labeled: Prisma schema, models) and a database on the right (labeled: Database, tables). Two parallel arrows connect the schema and the database, showing how '@unique' maps to 'UNIQUE' and '@id' maps to 'PRIMARY KEY'.

数据模型中的每一个¹特性都对应于底层数据库中的一个特性。如果您可以在 Prisma schema 中定义某个特性,那么它就受 Prisma Migrate 支持。

有关 Prisma schema 特性的完整列表,请参阅

Prisma Migrate 还支持将每个字段映射到特定的原生类型,并且有一些方法可以在数据库中包含 Prisma schema 中没有对应项的特性

注意

注释和 Prisma ORM 级别的函数(uuid()cuid())不映射到数据库特性。

将字段映射到特定的原生类型

每个 Prisma ORM 类型都默认映射到底层数据库类型——例如,PostgreSQL 连接器默认将 String 映射到 text原生数据库类型属性决定了在数据库中应该创建哪个特定的原生类型。

信息

注意:有些 Prisma ORM 类型只映射到一种原生类型。

在以下示例中,nametitle 字段具有 @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 将不受支持的特性添加到您的数据库中