Native database types (Prisma ORM v6) (/docs/orm/v6/prisma-migrate/workflows/native-database-types)
For the complete Prisma documentation index, see llms.txt. A markdown version of any docs page is available by appending
.mdto its URL.
Native database types
Location: ORM > v6 > Prisma Migrate > Workflows > 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.
[!NOTE] Comments and Prisma ORM-level functions (
uuid()andcuid()) do not map to database features.
Mapping fields to a specific native type
Section titled “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"
}
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
Section titled “Mappings by Prisma ORM type”For type mappings organized by Prisma ORM type, refer to the Prisma schema reference documentation.
Mappings by database provider
Section titled “Mappings by database provider”For type mappings organized by database provider, see:
Handling unsupported database features
Section titled “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
Related pages
Section titled “Related pages”Baselining a database: How to initialize a migration history for an existing database that contains important data.Customizing migrations: How to edit a migration file before applying it to avoid data loss in production.Data migrations: How to migrate data using Prisma ORM with the expand and contract pattern.Development and production: Development and productionGenerating down migrations: How to generate down migrations