Det maximala antalet rader du kan infoga i en sats är 1000 när du använder INSERT INTO ... VALUES...
dvs.
INSERT INTO TableName( Colum1)
VALUES (1),
(2),
(3),...... upto 1000 rows.
Men om du använder en SELECT-sats för att infoga rader i en tabell, finns det ingen gräns för det, något i stil med...
INSERT INTO TableName (ColName)
Select Col FROM AnotherTable
Nu kommer till din andra fråga. Vad händer när ett fel uppstår under en insättning.
Tja om du infogar rader med flervärdeskonstruktion
INSERT INTO TableName( Colum1)
VALUES (1),
(2),
(3)
I ovanstående scenario, om någon radinfogning orsakar ett fel, kommer hela satsen att återställas och ingen av raderna kommer att infogas.
Men om du skulle infoga rader med en separat sats för varje rad, dvs ...
INSERT INTO TableName( Colum1) VALUES (1)
INSERT INTO TableName( Colum1) VALUES (2)
INSERT INTO TableName( Colum1) VALUES (3)
I ovanstående fall är varje radinfogning en separat sats och om någon radinsättning orsakade ett fel kommer endast den specifika infogningssatsen att återställas, resten kommer att infogas.