Prisma তে বিভিন্ন constraint বা attribute আছে যা SQL-এর মতো constraint সেট করার জন্য ব্যবহার করা হয়। নিচে Prisma Schema-তে ব্যবহৃত সব গুরুত্বপূর্ণ constraint-এর তালিকা দেয়া হলো:
✅ 🧩 Field-Level Constraints (Column Constraints)
Constraint / Attribute |
কাজ |
উদাহরণ |
@id |
Primary key সেট করে |
id Int @id |
@default(value) |
Default value দেয় |
isActive Boolean @default(true) |
@default(autoincrement()) |
Auto-increment (for PK) |
id Int @id @default(autoincrement()) |
@default(uuid()) |
Default UUID (usually for String ID) |
id String @id @default(uuid()) |
@unique |
Unique constraint দেয় |
email String @unique |
@updatedAt |
প্রতিবার রেকর্ড আপডেট হলে স্বয়ংক্রিয়ভাবে এই ফিল্ড আপডেট হয় |
updatedAt DateTime @updatedAt |
? (question mark) |
Optional field বোঝায় |
content String? (nullable) |
🔗 🧷 Relation Constraints (Foreign Key & Relations)
Constraint |
কাজ |
উদাহরণ |
@relation() |
Foreign key relationship define করে |
user User @relation(fields: [userId], references: [id]) |
fields: [] |
এই ফিল্ডগুলো foreign key হিসাবে ব্যবহার হবে |
@relation(fields: [userId], references: [id]) |
references: [] |
রেফারেন্সড টেবিলের কোন ফিল্ডে relation হবে |
— উপরের উদাহরণেই আছে |
onDelete: Cascade |
Parent ডিলিট হলে child গুলাও ডিলিট হবে |
@relation(onDelete: Cascade) |
onUpdate: Cascade |
Parent আপডেট হলে child গুলাও আপডেট হবে |
@relation(onUpdate: Cascade) |
🔢 🧮 Compound Constraints (Multiple columns together)
@@unique([firstName, lastName])
Constraint |
কাজ |
উদাহরণ |
@@unique([...]) |
Multiple column মিলিয়ে unique constraint |
@@unique([email, phone]) |
@@id([...]) |
Composite primary key |
@@id([userId, postId]) |
@@index([...]) |
Indexed column তৈরি করে |
@@index([email]) |
📘 উদাহরণ দিয়ে সব একসাথে:
model User {
id Int @id @default(autoincrement())
name String
email String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
userId Int
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@index([title])
}
🧠 Bonus: Prisma এর Built-in Default Functions
Function |
Description |
autoincrement() |
Auto-incrementing number (usually for primary key) |
uuid() |
Generate UUID (for string id) |
cuid() |
Collision-resistant id |
now() |
Current date-time |