我正在使用SQL Server 2008。
我有一个INSERT
语句,它将一个表中的大量记录插入到另一个表中。
在插入时,我遇到了主键异常。
我的问题是......如果在插入第5行时发生异常......是否会回滚所有四条记录(之前插入的)?
提前致谢。
答案 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*/