Ответ 1
Максимальное количество строк, которые вы можете вставить в один оператор, составляет 1000 при использовании INSERT INTO ... VALUES...
i.e.
INSERT INTO TableName( Colum1)
VALUES (1),
(2),
(3),...... upto 1000 rows.
Но если вы используете инструкцию SELECT для вставки строк в таблицу, для этого нет предела, что-то вроде...
INSERT INTO TableName (ColName)
Select Col FROM AnotherTable
Теперь перейдем к вашему второму вопросу. Что происходит, когда во время вставки возникает ошибка.
Хорошо, если вы вставляете строки с использованием многозначной конструкции
INSERT INTO TableName( Colum1)
VALUES (1),
(2),
(3)
В приведенном выше сценарии, если какая-либо вставка строки вызывает ошибку, весь оператор будет откат и ни одна из строк не будет вставлена.
Но если вы вставляете строки с отдельным оператором для каждой строки, то есть...
INSERT INTO TableName( Colum1) VALUES (1)
INSERT INTO TableName( Colum1) VALUES (2)
INSERT INTO TableName( Colum1) VALUES (3)
В приведенном выше случае каждая вставка строки представляет собой отдельный оператор, и если какая-либо вставка строки вызвала ошибку, то только конкретный оператор вставки будет откат, остальные будут успешно вставлены.