Будет ли исключение при вставке, откат ранее вставленных данных? - PullRequest
0 голосов
/ 04 апреля 2011

Я использую SQL Server 2008.

У меня есть оператор INSERT, который вставляет огромное количество записей из одной таблицы в другую.При вставке я получил исключение первичного ключа.

Мой вопрос ... если исключение возникает при вставке 5-й строки ... Будет ли откатываться все четыре записи (которые были вставлены ранее)?

Заранее спасибо.

1 Ответ

5 голосов
/ 04 апреля 2011

Да. Он выполнит откат всех строк, вставленных в этот оператор , если в индексе не включена опция 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*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...