在SQL Server中向表中插入多行时,如果出现错误,我该如何记录该错误并继续通过绕过该错误插入下一条记录?
答案 0 :(得分:1)
当所有插入一次运行时(例如insert into ... select
),数据库实现ACID,其中一个组件(A,Atomicy)意味着(根据{{3}) }):
原子性要求每笔交易都是"全部或全部"
这意味着您必须在单个语句中分离您的操作,在SQL Server中这是单个事务(另一方面,在Oracle中,由于它在默认情况下在一个事务中运行所有后续查询,因此仍然无法运行)。
您可以创建单独的插入语句,并将每个语句放在Wikipedia。
中样品:
-- first
begin try
insert into ...
end try
begin catch
-- log error
end catch;
-- second
begin try
insert into ...
end try
begin catch
-- log error
end catch;