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