Supported database types and features
Prisma Migrate translates the model defined in your Prisma schema into features in your database.
Every¹ feature in your data model maps to a corresponding feature in the underlying database. If you can define a feature in the Prisma schema, it is supported by Prisma Migrate.
For a complete list of Prisma schema features, refer to:
- Database features matrix for a list of database features and what they map to in the Prisma schema.
- Prisma schema reference for a list of all Prisma schema features, including field types, attributes, and functions.
Prisma Migrate also supports mapping each field to a specific native type, and there are ways to include features without a Prisma schema equivalent in your database.
¹ Comments and Prisma-level functions (uuid()
and cuid()
) do not map to database features.
Mapping fields to a specific native type
Each Prisma type maps to a default underlying database type - for example, the PostgreSQL connector maps String
to text
by default. Native database type attributes determines which specific native type should be created in the database.
Note: Some Prisma types only map to a single native type.
In the following example, the name
and title
fields have a @db.VarChar(X)
type attribute:
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 Intauthor User @relation(fields: [authorId], references: [id])}
Prisma Migrate uses the specified types when it creates a migration:
-- CreateTableCREATE TABLE "User" ("id" SERIAL,"name" VARCHAR(200) NOT NULL,PRIMARY KEY ("id"));-- CreateTableCREATE TABLE "Post" ("id" SERIAL,"title" VARCHAR(150) NOT NULL,"published" BOOLEAN NOT NULL DEFAULT true,"authorId" INTEGER NOT NULL,PRIMARY KEY ("id"));-- AddForeignKeyALTER TABLE "Post" ADD FOREIGN KEY("authorId")REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
Mappings by Prisma type
For type mappings organized by Prisma type, refer to the Prisma schema reference documentation.
Mappings by database provider
For type mappings organized by database provider, see:
Handling unsupported database features
Prisma Migrate cannot automatically create database features that have no equivalent in Prisma Schema Language (PSL). For example, there is currently no way to define a stored procedure or a partial index in PSL. However, there are ways to add unsupported features to your database with Prisma Migrate:
- Handle unsupported field types (like
circle
) - Handle unsupported features, like stored procedures
- How to use native database functions