我想做一个批量插入,类似于这个问题
How to do a batch insert in MySQL
> sql Server在单个insert语句中可以插入多少行的限制是什么?
>例如,插入第一个值但第二个值导致主键违规时会发生什么.是否所有INSERT语句都回滚了?
INSERT INTO tbl_name (a,b) VALUES (1,2),(1,3));
解决方法
使用INSERT INTO … VALUES时,可以在一个语句中插入的最大行数为1000 …
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),(3)
在上面的场景中,如果任何行插入导致错误,则将回滚整个语句,并且不会插入任何行.
但是如果你为每一行插入带有单独语句的行,即……
INSERT INTO TableName( Colum1) VALUES (1) INSERT INTO TableName( Colum1) VALUES (2) INSERT INTO TableName( Colum1) VALUES (3)
在上面的例子中,每个行插入都是一个单独的语句,如果任何行插入只导致错误,那么特定的插入语句将被回滚,其余的将被成功插入.