Enums
Define enum blocks, use them in models, and understand Dart and migration behavior.
Enums
Enums are first-class schema blocks and become generated Dart enums.
Declaring an enum
enum Role {
admin
member
}Use the enum in a model field:
model User {
id Int @id @default(autoincrement())
role Role @default(member)
}Generated Dart usage:
await db.user.create(
data: const UserCreateInput(
role: Role.admin,
),
);Enum defaults
Enum defaults use enum values directly:
role Role @default(member)Mapping enum storage names
When the database type name must differ from the logical enum name, use @@map.
enum PostStatus {
draft
published
@@map("post_status")
}Migration implications
Enum changes are more sensitive than normal scalar changes.
- adding values is usually straightforward
- reordering or renaming values needs explicit review
- removing values can be destructive if live rows still reference them
For shared PostgreSQL databases, review enum migrations especially carefully because enum value changes can require rebuild-like transitions or explicit data cleanup.