插入,回滚时是否会出现异常插入数据?

时间:2011-04-04 14:50:07

标签: sql-server-2008 insert rollback

我正在使用SQL Server 2008。

我有一个INSERT语句,它将一个表中的大量记录插入到另一个表中。 在插入时,我遇到了主键异常。

我的问题是......如果在插入第5行时发生异常......是否会回滚所有四条记录(之前插入的)?

提前致谢。

1 个答案:

答案 0 :(得分:5)

是。除非您在索引上启用了IGNORE_DUP_KEY选项,否则它将回滚在该语句中插入的所有行

create table t1
(
col int NOT NULL PRIMARY KEY WITH (IGNORE_DUP_KEY=ON)
)

create table t2
(
col int NOT NULL PRIMARY KEY WITH (IGNORE_DUP_KEY=OFF)
)

INSERT INTO t1 values (1),(1)

INSERT INTO t2 values (1),(1)

SELECT * FROM t1 /*Returns 1 row*/

SELECT * FROM t2 /*Returns 0 rows*/