跳过至主要内容

原生数据库类型

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 将不支持的功能添加到您的数据库中

© . All rights reserved.