Transaction sql server
Transaction sql server là 1 tập các câu lệnh thực thi tới database, các câu lệnh được thực thi 1 cách tuần tự, nếu nắm tới bất cứ lệnh nào bị lỗi, transaction sẽ dừng lại và rollback DB toàn bộ các câu lệnh đã thực thi, trả lại database như lúc start transaction. Transaction sql server sở hữu một chuẩn được liên hệ tắt là ACID bao gồm 4 thuộc tính:
- Atomicity (Tính tự trị): bảo đảm tất cả các hành động trong phạm vi một đơn vị transaction là biến thành công triệt để. Ngược lại, transaction sẽ bị dừng ngay ở thời điểm lỗi, và sẽ phục hồi quay ngược (rollback) lại thời điểm chưa xảy ra sự đổi thay.
- Consistency (Tính nhất quán): đảm bảo đa số các thao tác trên cơ sở data được chuyển đổi sau khi giao dịch biến thành công và không xảy ra lỗi.
- Isolation (Tính cô lập): chắc chắn transaction này hoạt động độc lập so với transaction khác. Ví dụ C đang chuyển tiền thì sẽ không tương tác tới D chuyển tiền.
- Durability (Tính bền vững): chắc chắn thành quả hoặc thúc đẩy của transaction vẫn luôn tồn tại, kể cả khi chương trình xảy ra lỗi.
Trong Laravel bạn có thể dùng transaction đơn giản và dễ dàng bằng 2 cách: Cách thủ công Để khởi đầu transaction: DB::beginTransaction(); Để rollback: DB::rollBack(); Để commit: DB::commit();
Cách tự động: Nếu nắm tới lỗi xảy ra thì sẽ tự động rollback và ngược lại nếu thành công thì sẽ tự động commit:
DB::transaction(function ()
$user = User::findOrFail($id);
$order = Order::create([
'user_id' => $user->id,
'money' => 1000000,
]);
$availableAmount = $user->amount - 1000000;
$user->update(['amount' => $availableAmount]);
);
Nguyễn Thanh Tuấn (sieutocviet.com)
Với hơn 4 năm thực chiến Laravel 5 năm kinh nghiệm trong quản trị website tư vấn giải pháp Seo top, Kinh doanh online tối ưu nhất cho doanh nghiệp.
Hiện giữ chức vụ giám đốc kinh doanh tại Siêu Tốc Việt.