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

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

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

© . All rights reserved.