【问题标题】:How to set initial value and auto increment in MySQL?如何在 MySQL 中设置初始值和自增?
【发布时间】:2010-12-01 22:08:35
【问题描述】:

如何设置 MySQL 表中从 1001 开始的“id”列的初始值?

我想做一个插入"INSERT INTO users (name, email) VALUES ('{$name}', '{$email}')";

没有指定id列的初始值。

【问题讨论】:

    标签: mysql insert auto-increment


    【解决方案1】:

    使用这个:

    ALTER TABLE users AUTO_INCREMENT=1001;
    

    或者如果您还没有添加 id 列,也添加它

    ALTER TABLE users ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT,
        ADD INDEX (id);
    

    【讨论】:

    • 我意识到这是 7 年前的事了,但是……我能解释一下这个答案的各个部分吗? ADD INDEX 在这里做什么?我是否必须将其添加到与id 列相同的语句中,还是可以在CREATE TABLE 块中定义id 列,然后在ADD INDEX(id) 中定义?
    • 嘿,时间过去了……当然,如果你能做到的话,在 CREATE TABLE 中定义它。答案的第二个“ALTER TABLE”部分意味着您已经创建了一个表,并且它可能已经部署在没有正确索引的地方,这是第一个“ALTER TABLE”按预期工作所必需的。我希望这个解释会有所帮助。
    • 是的,这确实有帮助。我正在查看一些以类似方式使用这些语句的示例,现在它们更有意义了。谢谢。
    • ADD INDEX 的原因是因为没有它,如果您在现有表上已有主键,您将获得there can be only one auto column and it must be defined as a key。您需要索引,因此它将是 MUL 键。
    • 我在一个刚刚创建的表上尝试了这个,还没有添加任何行。除非首先将至少 1 行添加到表中,否则这似乎不起作用。
    【解决方案2】:

    MySQL - 设置一个从 1001 开始的自增主键:

    第 1 步,创建表格:

    create table penguins(
      my_id       int(16) auto_increment, 
      skipper     varchar(4000),
      PRIMARY KEY (my_id)
    )
    

    第二步,设置自增主键的起始编号:

    ALTER TABLE penguins AUTO_INCREMENT=1001;
    

    第 3 步,插入一些行:

    insert into penguins (skipper) values("We need more power!");
    insert into penguins (skipper) values("Time to fire up");
    insert into penguins (skipper) values("kowalski's nuclear reactor.");
    

    第 4 步,解释输出:

    select * from penguins
    

    打印:

    '1001', 'We need more power!'
    '1002', 'Time to fire up'
    '1003', 'kowalski\'s nuclear reactor'
    

    【讨论】:

    • 特殊企鹅要设置id
    • 你可以插入任何空闲的id,只要把它放在列列表中:insert into penguins (my_id, skipper) values(999, "explicit id");(当使用0而不是999时会插入自动增量值)
    【解决方案3】:

    MySQL 工作台

    如果你想避免写sql,你也可以在MySQL Workbench中通过右键单击表,在菜单中选择“Alter Table ...”。

    当表结构视图打开时,转到选项卡“选项”(在视图的底部),并将“自动增量”字段设置为下一个自动增量数字的值。

    完成所有更改后,不要忘记点击“应用”。

    PhpMyAdmin:

    如果您使用的是 phpMyAdmin,您可以单击左侧导航中的表格,转到“操作”选项卡,在表格选项下更改 AUTO_INCREMENT 值,然后单击确定。

    【讨论】:

    • 你说的是phpMyAdmin吗?
    • 不,我想他说的是 MySQL Workbench。
    • @Saturnian,是的,你是对的,我指的是工作台。我将编辑我的帖子以澄清这一点。
    • phpMyAdmin 一步解决了自动增量问题,我尝试走代码路线但它不起作用。
    【解决方案4】:

    首先您需要为自动增量添加列

    alter table users add column id int(5) NOT NULL AUTO_INCREMENT FIRST
    

    这个查询首先是添加列。 现在您必须重置自动增量初始值。所以使用这个查询

    alter table users AUTO_INCREMENT=1001
    

    现在您的表以 1001 开头

    【讨论】:

      【解决方案5】:

      您也可以在create table 语句中设置它。

      `CREATE TABLE(...) AUTO_INCREMENT=1000`
      

      【讨论】:

        【解决方案6】:

        使用 CREATE TABLE 语句

        CREATE TABLE my_table (
          id INT UNSIGNED NOT NULL AUTO_INCREMENT,
          name VARCHAR(100) NOT NULL,
          PRIMARY KEY (id)
        ) AUTO_INCREMENT = 100;
        

        或使用 ALTER TABLE 语句

        ALTER TABLE my_table AUTO_INCREMENT = 200;
        

        【讨论】:

          【解决方案7】:

          或者,如果您懒得编写 SQL 查询。那么这个解决方案适合你。

          1. 打开 phpMyAdmin
          2. 选择所需的表格
          3. 点击操作标签
          4. AUTO_INCREMENT 设置所需的初始值
          5. 完成..!

          【讨论】:

            【解决方案8】:

            为此,您必须设置 AUTO_INCREMENT

            ALTER TABLE tablename AUTO_INCREMENT = <INITIAL_VALUE>
            

            例子

            ALTER TABLE tablename AUTO_INCREMENT = 101
            

            【讨论】:

              【解决方案9】:

              另外,在 PHPMyAdmin 中,您可以从左侧选择表格(表格列表),然后前往那里执行此操作。
              操作选项卡->表格选项->AUTO_INCREMENT。

              现在,设置您的值,然后按 转到 Table Options Bo 下x。

              【讨论】:

                【解决方案10】:

                SET GLOBAL auto_increment_offset=1;

                SET GLOBAL auto_increment_increment=5;

                auto_increment_increment:连续列值之间的间隔

                auto_increment_offset:确定 AUTO_INCREMENT 列值的起点。 默认值为 1。

                read more here

                【讨论】:

                  猜你喜欢
                  • 2011-11-25
                  • 2013-11-25
                  • 1970-01-01
                  • 2018-02-11
                  • 1970-01-01
                  • 2013-05-15
                  • 1970-01-01
                  • 2013-04-20
                  相关资源
                  最近更新 更多