大家好,我的Mysql版本是5.0.22-community-nt我现在想循环插入数据,就是要实现一下子可以注册500个用户,但是用户表有建立了索引,这样的话,插入的数据都会报错,如何实现了。

解决方案 »

  1.   


    create PROCEDURE dowhile()   
    BEGIN  
        DECLARE i int DEFAULT 0;   
       START TRANSACTION;--定义事务   
              WHILE i<100 DO   
                    INSERT INTO user_basic(username, passport,  password,  truename,email, company)   
                            VALUES(CONCAT('lll',i),CONCAT('llll',i),ecc1633d785ef59115,CONCAT('这是测试 ',i)1,CONCAT('username@test',i,'.com'),now(),10+i,now());   
            set i=i+1;   
              END WHILE;   
        COMMIT;--开始执行事务   
    END  
    这样写可以吗?
      

  2.   

    create PROCEDURE dowhile()   
    BEGIN  
        DECLARE i int DEFAULT 0;   
       START TRANSACTION;--定义事务   
              WHILE i<100 DO   
                    INSERT INTO user_basic(username, passport,  password,  truename,email, company)   
                            VALUES(CONCAT('lll',i),CONCAT('llll',i),ecc1633d785ef59115,CONCAT('这是测试 ',i),CONCAT('username@test',i,'.com'));   
            set i=i+1;   
              END WHILE;   
        COMMIT;--开始执行事务   
    END  改为这样,也不行,是不是我mysql的版本问题。
      

  3.   

    password什么类型
    CONCAT('这是测试 ',i)1:有问题
    CONCAT('username@test',i,'.com'),now(),10+i,now():有问题
      

  4.   


    password是varchar(32)类型我现在重新再改了下。
    create PROCEDURE dowhile()   
    BEGIN   
      DECLARE i int DEFAULT 0;   
      START TRANSACTION;--定义事务   
      WHILE i<100 DO   
      INSERT INTO user_basic(username, passport, password, truename,email, company)   
      VALUES(CONCAT('lll',i),CONCAT('llll',i),ecc1633d785ef59115,CONCAT('这是测试 ',i),CONCAT('username@test',i,'.com'),CONCAT('这是测试 ',i));   
      set i=i+1;   
      END WHILE;   
      COMMIT;--开始执行事务   
    END   
      

  5.   

    INSERT INTO user_basic(username, passport, password, truename,email, company)   
       VALUES(CONCAT('lll',i),CONCAT('llll',i),'ecc1633d785ef59115',CONCAT('这是测试 ',i),CONCAT('username@test',i,'.com'),CONCAT('这是测试 ',i));   
       set i=i+1;  
      

  6.   


    错误
    SQL 查询: CREATE PROCEDURE dowhile( ) BEGIN DECLARE i int DEFAULT 0;MySQL 返回: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'int DEFAULT 0' at line 3 还是会报错
      

  7.   

    DELIMITER $$
    CREATE PROCEDURE dowhile()   
    BEGIN   
       DECLARE i INT DEFAULT 0;   
       START TRANSACTION; 
       WHILE i<100 DO   
       INSERT INTO user_basic(username, passport, PASSWORD, truename,email, company)   
       VALUES(CONCAT('lll',i),CONCAT('llll',i),'ecc1633d785ef59115',CONCAT('这是测试 ',i),CONCAT('username@test',i,'.com'),CONCAT('这是测试 ',i));  
       SET i=i+1;   
       END WHILE;   
       COMMIT;
    END  $$
    DELIMITER ;
      

  8.   

    错误
    SQL 查询: DELIMITER $$ CREATE PROCEDURE dowhile( ) BEGIN DECLARE i INT DEFAULT 0;MySQL 返回: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$
    CREATE PROCEDURE dowhile()   
    BEGIN   
      DECLARE i INT DEFAULT 0' at line 1 
      

  9.   

    你的代码是这样?
    DELIMITER $$ CREATE PROCEDURE dowhile( ) BEGIN DECLARE i INT DEFAULT 0;所有东西都在一行上? 并且没有END结束?
      

  10.   

    在MYSQL命令下测试没有,我是测试通过的
      

  11.   


    测试OK
    DELIMITER $$
    CREATE PROCEDURE dowhile()   
    BEGIN   
      DECLARE i INT DEFAULT 0;   
      START TRANSACTION;  
      WHILE i<100 DO   
      INSERT INTO user_basic(username, passport, PASSWORD, truename,email, company)   
      VALUES(CONCAT('lll',i),CONCAT('llll',i),'ecc1633d785ef59115',CONCAT('这是测试 ',i),CONCAT('username@test',i,'.com'),CONCAT('这是测试 ',i));   
      SET i=i+1;   
      END WHILE;   
      COMMIT;
    END $$
    DELIMITER ;
    create table user_basic(id int(6) NOT NULL AUTO_INCREMENT UNIQUE,username VARCHAR(20),passport VARCHAR(20),PASSWORD VARCHAR(20),truename VARCHAR(20),email VARCHAR(20),company VARCHAR(20));
    mysql> call dowhile();