Tôi có một số mã trong trình kích hoạt chèn sau có khả năng không thành công. Sự thất bại như vậy không quan trọng và nên không hoàn nguyên giao dịch. Làm thế nào tôi có thể bẫy lỗi bên trong kích hoạt và có phần còn lại của giao dịch thực hiện bình thường?TSQL khiến kích hoạt không âm thầm
Ví dụ bên dưới minh họa ý của tôi. Trình kích hoạt cố ý tạo ra một điều kiện lỗi với kết quả rằng chèn ban đầu ("1") không bao giờ chèn vào bảng. Try/Catch dường như không làm trò lừa. Tương tự, older stack overflow question không mang lại câu trả lời ngoại trừ "ngăn lỗi xảy ra ngay từ đầu" - điều này không phải lúc nào cũng có thể/dễ dàng.
Bất kỳ ý tưởng nào khác?
create table test
(
a int not null
);
go
create trigger testTrigger on test
after insert as
begin
insert into test select null;
end;
go
insert into test values (1);
Tại sao thử/Bắt không hoạt động? – cjk
@ck: bởi vì các ràng buộc vi phạm bên trong các trigger gây ra các giao dịch. – Quassnoi