ネイティブデータベース型
Prisma Migrateは、Prismaスキーマで定義されたモデルをデータベースの機能に変換します。
1 データモデルのすべての機能は、基盤となるデータベースの対応する機能にマッピングされます。 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 Schema Language(PSL)に相当するものがないデータベース機能を自動的に作成することはできません。たとえば、現在、PSLでストアドプロシージャまたは部分インデックスを定義する方法はありません。ただし、Prisma Migrateを使用して、サポートされていない機能をデータベースに追加する方法があります。
- サポートされていないフィールド型(
circle
など)を処理する - サポートされていない機能(ストアドプロシージャなど)を処理する
- ネイティブデータベース関数の使用方法