Native database types
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 ORM-level functions (uuid()
and cuid()
) do not map to database features.
Mapping fields to a specific native type
Each Prisma ORM 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 ORM 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 Int
author User @relation(fields: [authorId], references: [id])
}
Prisma Migrate uses the specified types when it creates a migration:
-- 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;
Mappings by Prisma ORM type
For type mappings organized by Prisma ORM 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