日期:2014-05-16  浏览次数:20684 次

在MySql中建立存储过程和解决insert into select 中主键冲突的问题
首先说需求,我想重复插入大量数据,那么首先想到的,就是用insert into select语句。

但是因为mysql中没有将主键设为自增长,导致每次都会报主键冲突的错误,插入失败。


对于这个问题,就是灵活得改变一下。之前,我们一直用的是 insert into tableA select * frrom tableA

因此,现在我们修改为:insert into tableA(A,B,C)  (select (A,B,C) from tableA)


或者,在数据库中,写一个存储过程,然后通过调用它,实现目的。

代码 :

drop PROCEDURE testPRO;
CREATE PROCEDURE testPRO()  
BEGIN 
      DECLARE a INT DEFAULT 1;      
      WHILE (a <= 40) DO      
     INSERT into tableA(A,B,C) VALUES(1','2','3');     
     set a = a+1;
     END WHILE;
END 
 

//调用此存储过程
call testPRO();

?

FROM http://blog.csdn.net/angus_17/article/details/8020833