Maksymalna liczba wierszy, które można wstawić w jednej instrukcji, to 1000 przy użyciu INSERT INTO ... VALUES...
tj.
INSERT INTO TableName( Colum1)
VALUES (1),
(2),
(3),...... upto 1000 rows.
Ale jeśli używasz instrukcji SELECT do wstawiania wierszy do tabeli, nie ma na to żadnych ograniczeń, coś w rodzaju...
INSERT INTO TableName (ColName)
Select Col FROM AnotherTable
Teraz przechodzę do twojego drugiego pytania. Co się dzieje, gdy podczas wstawiania wystąpi błąd.
Cóż, jeśli wstawiasz wiersze za pomocą konstrukcji wielowartościowej
INSERT INTO TableName( Colum1)
VALUES (1),
(2),
(3)
W powyższym scenariuszu, jeśli jakiekolwiek wstawienie wiersza spowoduje błąd, cała instrukcja zostanie wycofana i żaden z wierszy nie zostanie wstawiony.
Ale jeśli wstawiałeś wiersze z osobną instrukcją dla każdego wiersza, tj. ...
INSERT INTO TableName( Colum1) VALUES (1)
INSERT INTO TableName( Colum1) VALUES (2)
INSERT INTO TableName( Colum1) VALUES (3)
W powyższym przypadku każde wstawienie wiersza jest osobną instrukcją i jeśli jakiekolwiek wstawienie wiersza spowodowało błąd, tylko ta konkretna instrukcja wstawienia zostanie wycofana, reszta zostanie pomyślnie wstawiona.