跳至主要内容

原生数据库类型

Prisma Migrate 将您在 Prisma 模式 中定义的模型转换为数据库中的功能。

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 模式中定义功能,则 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 模式语言 (PSL) 中没有等效项的数据库功能。例如,目前无法在 PSL 中定义存储过程或部分索引。但是,有一些方法可以使用 Prisma Migrate 将不支持的功能添加到您的数据库中