Bắt đầu ngayBắt đầu miễn phí

XACT_ABORT và THROW

Những khách hàng giàu nhất của ngân hàng nơi bạn làm việc đã quyết định quyên góp 0,01% current_balance của họ cho một tổ chức phi lợi nhuận. Bạn phụ trách chuẩn bị script để cập nhật tài khoản khách hàng, nhưng chỉ thực hiện cho các tài khoản có current_balance trên 5.000.000 đô la. Giám đốc ngân hàng nói rằng nếu không có ít nhất 10 khách hàng giàu, bạn không nên thực hiện thao tác này vì bà ấy muốn phỏng vấn thêm khách hàng.

Bạn chuẩn bị một script, và trong nhiều cách có thể làm, bạn quyết định dùng XACT_ABORT kết hợp với THROW. Bằng cách này, nếu số dòng bị ảnh hưởng nhỏ hơn hoặc bằng 10, bạn có thể ném lỗi để giao dịch được rollback.

Bài tập này là một phần của khóa học

Giao dịch và Xử lý lỗi trong SQL Server

Xem khóa học

Hướng dẫn bài tập

  • Dùng thiết lập phù hợp cho XACT_ABORT.
  • Bắt đầu giao dịch.
  • Nếu số dòng bị ảnh hưởng nhỏ hơn hoặc bằng 10, ném lỗi bằng câu lệnh THROW với số lỗi 55000.
  • COMMIT giao dịch nếu số dòng bị ảnh hưởng lớn hơn 10.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

-- Use the appropriate setting
SET XACT_ABORT ___;
-- Begin the transaction
___ ___; 
	UPDATE accounts set current_balance = current_balance - current_balance * 0.01 / 100
		WHERE current_balance > 5000000;
	IF @@ROWCOUNT <= 10	
    	-- Throw the error
		___ ___, 'Not enough wealthy customers!', 1;
	ELSE		
    	-- Commit the transaction
		___ ___; 
Chỉnh sửa và Chạy Mã