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

Rel*_*ity 0 insert rollback sql-server-2008

我正在使用SQL Server 2008.

我有一个INSERT声明,从一个表到另一个表插入大量的记录.在插入时,我得到了主键异常.

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

提前致谢.

Mar*_*ith 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*/
Run Code Online (Sandbox Code Playgroud)