ネイティブデータベース型
Prisma Migrateは、あなたのPrismaスキーマで定義されたモデルをデータベースの機能に変換します。
あなたのデータモデルのすべての¹機能は、基盤となるデータベースの対応する機能にマッピングされます。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を使用してサポートされていない機能をデータベースに追加する方法があります
- サポートされていないフィールド型(`circle`など)を処理する
- ストアドプロシージャなどのサポートされていない機能を処理する
- ネイティブデータベース関数の使用方法