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.