Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • PrismaPostgres Documentation40টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Prisma Intro
  • Prisma vs Raw SQL
  • Setup & Install
  • Schema Basics
  • Models
  • Relations
  • Migrations
  • Prisma Client
  • Create & Upsert
  • Read Queries
  • Update & Delete
  • Query Filters
  • Sort & Pagination
  • Select & Include
  • Nested Writes
  • Transactions
  • Aggregation
  • JSON Fields
  • Raw SQL
  • TechShop Schema
  • TechShop Seed
  • Relations Advanced
  • Env Config
  • Global Client
  • Next.js + Prisma
  • Express API
  • Error Handling
  • Performance
  • Connection Pool
  • Prisma Studio
  • Deploy Migrations
  • TechShop Indexes
  • TechShop Cart
  • TechShop Stats API
  • Schema Evolution
  • Debugging
  • Common Mistakes
  • Best Practices
  • Interview Questions
  • Recap & Next
  1. Docs
  2. PrismaPostgres
  3. $transaction — সব-or-নাতথাক ATOMICITY
PrismaPostgresAdvanced

$transaction — সব-or-নাতথাক ATOMICITY

একাধিক query-batch বা sequential — অখণ্ডতা।

4টি অংশবাংলা ভাষায়
array (batch)ts
ts
const [order, updatedStock] = await prisma.$transaction([
  prisma.order.create({
    data: { userId: 7, total: 10200, status: "pending" },
  }),
  prisma.product.update({
    where: { id: 3 },
    data: { qty: { decrement: 2 } },
  }),
]);
interactive — condition সহts
ts
await prisma.$transaction(async (tx) => {
  const stock = await tx.product.findUnique({ where: { id: 3 } });

  if (!stock || stock.qty < 2) {
    throw new Error("stock insufficient");
  }

  await tx.product.update({
    where: { id: 3 },
    data: { qty: { decrement: 2 } },
  });
});
  • Batch ($transaction([...])) — এক SQL batch, দ্রুত
  • Interactive (async fn) — ভেতরে যেকোনো query, transaction-এ
  • Throw হলে সব rollback — কোন আংশিক বদল নয়
concurrency

একই row দুই request-এ বদলালে lost update হয় — qty: { decrement } atomic সুবিধা। গুরুতর হলে row-lock/optimistic-versioning।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরNested write — বাবা-সন্তান এক query-তেপরেরcount, aggregate, groupBy
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com