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 sở hữu bất kỳ lệnh nào bị lỗi, transaction sẽ dừng lại và rollback DB tất cả các câu lệnh đã thực thi, trả lại database như lúc start transaction. Transaction sql server có một chuẩn được gọi tắt là ACID bao gồm 4 thuộc tính:

  • Atomicity (Tính tự trị): chắc chắn tất cả các hành động trong phạm vi một đơn vị transaction là biến thành công hoàn toàn. 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ự thay đổi.
  • Consistency (Tính nhất quán): bảo đảm đ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): bảo đảm transaction này vận hành độc lập so với transaction khác. Ví dụ C đang chuyển tiền thì sẽ không ảnh hưởng tới D chuyển tiền.
  • Durability (Tính bền vững): chắc chắn kết quả hoặc thúc đẩy của transaction vẫn luôn tồn tại, kể cả khi hệ thống xảy ra lỗi.

Transaction sql serverTrong Laravel bạn thường dùng transaction đơn giản 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 sở hữu 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]);
);

5/5 - (1 bình chọn)

Laravel transaction mysql - Các câu lệnh thực thi tới database

Nguyễn Văn Hải (hostmail.vn)

Có hơn 6 năm kinh nghiệm CSS, JS 5 năm thực chiến trong quản trị web site tư vấn giải pháp Seo top, Kinh doanh online tối ưu nhất cho tập đoàn quốc tế.
Hiện giữ chức vụ trưởng phòng kinh doanh tại Siêu Tốc Việt.