Header Ads

Header ADS

Prisma : Table Constraints

 


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


Powered by Blogger.