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 cứ 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 giống như lúc start transaction. Transaction sql server nắm tới một chuẩn được gọi tắt là ACID bao gồm 4 thuộc tính:

  • Atomicity (Tính tự trị): bảo đảm mọi các hành động trong phạm vi một đơn vị transaction là trở 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ự chuyển đổi.
  • Consistency (Tính nhất quán): chắc chắn tất cả các thao tác trên cơ sở dữ liệu đượ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): đảm bảo 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ác động tới D chuyển tiền.
  • Durability (Tính bền vững): đảm bảo kết quả hoặc liên quan của transaction vẫn luôn tồn tại, kể cả khi kế hoạch xảy ra lỗi.

Transaction sql serverTrong Laravel bạn có thể dùng transaction dễ dàng bằng 2 cách: Cách bằng tay Để khởi đầu transaction: DB::beginTransaction(); Để rollback: DB::rollBack(); Để commit: DB::commit();

Cách tự động: Nếu có lỗi xảy ra thì sẽ tự động rollback và ngược lại nếu trở 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)

Với hơn 3 năm thực chiến Drupal 7 năm thực chiến trong quản lý website tư vấn giải pháp đẩy top, Marketing tối ưu nhất cho công ty.
Hiện làm giám đốc kinh doanh tại Siêu Tốc Việt.