Nâng CaoDatabase iconDatabase

Database transactions trong Prisma: cách sử dụng?

Prisma hỗ trợ hai loại transactions: Sequential transactions với prisma.$transaction([op1, op2]) — chạy tuần tự, rollback toàn bộ nếu bất kỳ operation nào fail, không có conditional logic.

  • Interactive transactions với prisma.$transaction(async (tx) => { const user = await tx.user.create({...}); if (user.role === 'admin') { await tx.adminProfile.create({...}); } }) — cho phép conditional logic, dùng tx thay cho prisma để operations nằm trong cùng transaction.
  • Isolation levels: Prisma hỗ trợ chỉ định isolation level prisma.$transaction([...], { isolationLevel: Prisma.TransactionIsolationLevel.Serializable }).
  • Nested writes như implicit transactions: prisma.user.create({ data: { profile: { create: {...} } } }) tự động wrap trong transaction.
  • Timeout configuration: prisma.$transaction([...], { timeout: 5000 }) mặc định 5s — tăng khi cần.
  • Distributed transaction limitations: Prisma không hỗ trợ transactions spanning multiple databases — cần 2-phase commit protocol hoặc saga pattern cho microservices.

Xem toàn bộ Database cùng filter theo level & chủ đề con.

Mở danh sách Database