メインコンテンツにスキップ

ネイティブデータベース型

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'.

1 データモデルのすべての機能は、基盤となるデータベースの対応する機能にマッピングされます。 Prismaスキーマで機能を定義できる場合、それはPrisma Migrateでサポートされています。

Prismaスキーマ機能の完全なリストについては、以下を参照してください。

Prisma Migrateは、各フィールドを特定のネイティブ型にマッピングすることもサポートしており、Prismaスキーマに相当するものがない機能をデータベースに含める方法もあります。

注記

コメントとPrisma ORMレベルの関数(uuid()およびcuid())は、データベース機能にマッピングされません。

フィールドを特定のネイティブ型にマッピングする

各Prisma ORM型は、デフォルトの基盤となるデータベース型にマッピングされます。たとえば、PostgreSQLコネクタは、デフォルトでStringtextにマッピングします。ネイティブデータベース型属性は、データベースで作成する必要がある特定のネイティブ型を決定します。

情報

注意:一部の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を使用して、サポートされていない機能をデータベースに追加する方法があります。