SQL DEFAULT → Prisma @default — 4 Mapping Patterns | Free, In-Browser

4 mapping patterns from SQL DEFAULT to Prisma: literals, autoincrement(), now(), and dbgenerated(). Free. No signup. Data never leaves your browser.

Advanced Features

Detailed Explanation

Default Values in Prisma

SQL DEFAULT clauses set initial values for columns when no explicit value is provided during INSERT. Prisma supports several built-in default functions and a fallback for arbitrary database expressions.

Example SQL

CREATE TABLE articles (
  id SERIAL PRIMARY KEY,
  uuid UUID NOT NULL DEFAULT gen_random_uuid(),
  title VARCHAR(255) NOT NULL,
  status VARCHAR(20) NOT NULL DEFAULT 'draft',
  view_count INTEGER NOT NULL DEFAULT 0,
  is_featured BOOLEAN NOT NULL DEFAULT false,
  rating DECIMAL(3, 2) NOT NULL DEFAULT 0.00,
  published_at TIMESTAMPTZ,
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP
);

Generated Prisma Schema

model Article {
  id          Int       @id @default(autoincrement())
  uuid        String    @default(uuid()) @db.Uuid
  title       String
  status      String    @default("draft") @db.VarChar(20)
  viewCount   Int       @default(0) @map("view_count")
  isFeatured  Boolean   @default(false) @map("is_featured")
  rating      Decimal   @default(0.00) @db.Decimal(3, 2)
  publishedAt DateTime? @map("published_at") @db.Timestamptz()
  createdAt   DateTime  @default(now()) @map("created_at") @db.Timestamptz()
  updatedAt   DateTime  @updatedAt @map("updated_at") @db.Timestamptz()

  @@map("articles")
}

Default Mapping Table

SQL default Prisma default
Literal string ('draft') @default("draft")
Literal number (0, 1.5) @default(0), @default(1.5)
true / false @default(true), @default(false)
NOW() / CURRENT_TIMESTAMP @default(now())
SERIAL / AUTO_INCREMENT @default(autoincrement())
gen_random_uuid() @default(uuid())
Other DB functions @default(dbgenerated("..."))

Prisma Built-in Functions

Prisma provides four built-in default functions:

  1. autoincrement() — maps to SERIAL, AUTO_INCREMENT, IDENTITY
  2. now() — maps to NOW(), CURRENT_TIMESTAMP, GETDATE()
  3. uuid() — generates UUID v4 at the Prisma level
  4. cuid() — generates CUID at the Prisma level

The dbgenerated() Escape Hatch

For database-specific defaults not covered by Prisma's built-in functions, use dbgenerated():

// PostgreSQL array default
tags String[] @default(dbgenerated("'{}'::text[]"))

// PostGIS geometry default
location Unsupported("geometry") @default(dbgenerated("ST_GeomFromText('POINT(0 0)')"))

// MySQL UUID function
id String @default(dbgenerated("(UUID())"))

@updatedAt vs DEFAULT NOW()

Both created_at and updated_at in SQL often have DEFAULT NOW(). Prisma uses:

  • @default(now()) for created_at — set once at creation
  • @updatedAt for updated_at — automatically updated by Prisma client on every save

The converter detects common column names (updated_at, modified_at) and applies @updatedAt instead of @default(now()).

Enum Defaults

When a column with an enum type has a default:

status user_status NOT NULL DEFAULT 'active'

Prisma maps this to the enum value directly:

status UserStatus @default(active)

Note that enum defaults in Prisma use the enum value without quotes.

Use Case

Your SQL schema uses a variety of default expressions — literal values, NOW() for timestamps, gen_random_uuid() for UUIDs, and SERIAL for auto-increment. The converter maps each to the appropriate Prisma @default function or falls back to dbgenerated().

Try It — SQL to Prisma Schema

Open full tool