Chọn thời điểm commit hoặc rollback một giao dịch
Ngân hàng nơi bạn làm việc quyết định tặng $100 cho các tài khoản có số dư dưới $5,000. Tuy nhiên, giám đốc ngân hàng chỉ muốn tặng nếu không có quá 200 tài khoản có số dư dưới $5,000.
Bạn chuẩn bị một script để tặng $100 đó, và trong nhiều cách có thể, bạn quyết định mở một giao dịch rồi cập nhật mọi tài khoản có số dư dưới $5,000. Sau đó, bạn kiểm tra số hàng bị ảnh hưởng bởi câu lệnh cập nhật, sử dụng hàm @@ROWCOUNT. Nếu con số này lớn hơn 200, bạn rollback giao dịch. Ngược lại, bạn commit.
Bạn sẽ chuẩn bị script như thế nào?
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
Hướng dẫn bài tập
- Bắt đầu giao dịch.
- Kiểm tra xem số hàng bị ảnh hưởng có lớn hơn 200 không.
- Rollback giao dịch nếu số hàng bị ảnh hưởng lớn hơn 200.
- Commit giao dịch nếu số hàng bị ảnh hưởng nhỏ hơn hoặc bằng 200.
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.
-- Begin the transaction
___ ___;
UPDATE accounts set current_balance = current_balance + 100
WHERE current_balance < 5000;
-- Check number of affected rows
IF @@ROWCOUNT > ___
BEGIN
-- Rollback the transaction
___ ___;
SELECT 'More accounts than expected. Rolling back';
END
ELSE
BEGIN
-- Commit the transaction
___ ___;
SELECT 'Updates commited';
END