Kiểm soát Transaction trong SQL Server
Bài viết này sẽ hướng dẫn cho bạn hai cách để kiểm soát Transaction trong SQL Server:
Cách 1: bằng cách kiểm tra biến toàn cục @@ERROR để xác định nếu có lỗi xảy ra thì thực hiện rollback. Đây là cách cổ điển của SQL Server 2000. Điểm bất tiện của nó là sau mỗi câu lệnh SQL, ta phải thực hiện việc kiểm tra giá trị của biến này, để kịp thời rollback.
Ví dụ:
- CREATE PROC For_TransTest
- AS
- BEGIN
- BEGIN TRANSACTION updatestaff;
- UPDATE aspnet.staff SET fk_department = 30
- WHERE pk_staff = 971;
- IF @@ERROR != 0 -- neu co loi xay ra, rollback
- BEGIN
- PRINT 'rollback ne';
- ROLLBACK TRAN updatestaff;
- END
- UPDATE aspnet.staff SET fk_department = null
- WHERE pk_staff = 971;
- IF @@ERROR != 0 -- neu co loi xay ra, rollback
- BEGIN
- PRINT 'rollback ne';
- ROLLBACK TRAN updatestaff;
- END
- ELSE
- COMMIT TRANSACTION updatestaff;
- END
Cách 2: Sử dụng lệnh TRY...CATCH, hỗ trợ trên SQL Sever 2005, rất đơn giản và dễ dùng
Ví dụ:
- CREATE PROC For_TransTest
- AS
- BEGIN
- BEGIN TRY
-
- BEGIN TRANSACTION updatestaff;
- UPDATE aspnet.staff SET fk_department = 30
- WHERE pk_staff = 971;
- UPDATE aspnet.staff SET fk_department = null
- WHERE pk_staff = 971;
-
- COMMIT TRANSACTION updatestaff;
- PRINT 'commited';
- END TRY
- BEGIN CATCH
- PRINT 'rollback ne';
- ROLLBACK TRAN updatestaff;
- END CATCH
- END
[Nghean-Aptech st]
Các tin mới hơn:
Hướng dẫn tích hợp giao diện trang quản trị SB Admin 2 vào Laravel 5.8.
Hướng dẫn tích hợp Google ReCaptcha v2 vào Laravel bằng curl.
Học lập trình React JS trong vòng 5 phút.
Sử dụng trình soạn thảo CKeditor tích hợp CKFinder với Laravel.
Hướng dẫn cài đặt Apache, PHP, MySQL, PHPMyAdmin trên Windows 10 và cấu hình SendMail.
Các tin cũ hơn:
Tạo siêu liên kết trong Java Swing.
Phân trang nội dung bằng C#.
Phân trang dữ liệu trong SQL server.
Tạo sitemap với dữ liệu từ database.
Giảm kích thước file CSS với .NET.