如题 怎样在创建表的时候设置自增字段的初始值和步进值?下面是我写的存储过程,报语法错误:
CREATE PROCEDURE CREATE_JABBERDTABLE()
BEGIN
    DECLARE tableName VARCHAR(64);
    DECLARE i INT DEFAULT 0;
    
    WHILE(i < 20) DO
        SET tableName = CONCAT('vsgroup_',i);
    
        DROP TABLE IF EXISTS @tableName;
        CREATE TABLE @tableName
        (
            groupid INT(11) AUTO_INCREMENT(i,20) PRIMARY KEY,
        );
    END WHILE;END

解决方案 »

  1.   

    auto_increment_increment控制列中的值的增量值,即步长,
    auto_increment_offset确定AUTO_INCREMENT列的起点
    mysql> SET auto_increment_offset=5;
    mysql> SET auto_increment_increment=10;
    mysql> SHOW VARIABLES LIKE 'auto_inc%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | auto_increment_increment | 10    |
    | auto_increment_offset    | 5     |
    +--------------------------+-------+
    2 rows in set (0.00 sec)
      

  2.   

    初始值 可以对每个表进行设置。  create table xxxx (groupid INT(11) AUTO_INCREMENT PRIMARY KEY  ) AUTO_INCREMENT=20这个你可以在MYSQL的官方手册中看到语法说明。而 步进值 则是针对所有表的, 你可以通过 楼上的 auto_increment_increment 系统变量来设置。
      

  3.   

    auto_increment_increment 这个貌似对innodb不好使
      

  4.   

    谢谢楼上二位先。还有个问题就是怎样在创建表的时候用变量做表名?CREATE TABLE @tableName这样写不行哦。
      

  5.   

    MYSQL不支持这种,你只能用 PREPARE来实现这种要求。
    建议一次性把所有问题都提出,不要回答完一个紧跟一个。