【发布时间】:2018-09-25 17:49:15
【问题描述】:
假设我在SQL服务器中有一个程序为:
create procedure BULKINSERT
AS
INSERT INTO TABLEB (
SELECT NAME, ID From TableA
)
GO
一个简单的从 TABLE A 读取数据并插入 TABLE B。如果我有 100 万条记录要插入到表 B 中,并且一条记录由于某种原因失败,在这种情况下我应该使用 TRANSACTION 还是不使用?
我应该回滚整个操作吗?
【问题讨论】:
-
在交易中使用
TRY CATCH -
由于一个 statement 始终被认为是原子的,并且您这里只有 1 条语句,因此要么将 100 万条记录插入到
TABLEB中,要么没有。但是,如果发生错误,您可能需要处理错误,在这种情况下,您应该将INSERT放入TRY块并添加一个CATCH以处理发生错误时的处理方式。 -
@MK_ 你是对的。您应该发表您的评论作为答案。
标签: sql-server tsql stored-procedures transactions