【问题标题】:Troubles of adding a new ID (auto increment) after table exist表存在后添加新ID(自增)的问题
【发布时间】:2011-06-17 07:05:48
【问题描述】:

我有一个包含 38.000 条记录的表,但没有像 ID 这样的任何自动递增列。
现在得加个ID列,不知道会不会有麻烦?

【问题讨论】:

  • 是否已经有一个整数 ID 列可以唯一标识您的行?

标签: mysql auto-increment


【解决方案1】:

您对任何字段的定义更改的问题是更改是“破坏性的”。最好将此类更改视为数据迁移。我没有用 MySQL 做这件事,但不得不向 SQL Server 添加自动编号。基本思路是一样的。

查看文档,因为 MySQL 可能具有添加自动增量而不重置字段的机制。如果是这样,通过 SQL 来解决问题。一般来说,我建议不要使用工具直观地进行这些类型的更改,因为大多数工具在其方法上都极具破坏性。

【讨论】:

  • 刚刚使用 phpMyAdmin 添加了新字段,一切正常。订购不是很好,但这并不重要。谢谢
【解决方案2】:

“会不会有麻烦?”

仅插入记录可能会出现问题。不过……

一般来说,添加一个新字段通常是很安全的,不管它是否是一个自动递增的列。如果您不确定所有依赖项,它会更改或删除最有可能导致您出现问题的列。

不过,为了安全起见,为了安全起见,我会先在副本(测试)版本上进行尝试,然后先针对测试版本运行您的应用。无论如何,最好使用测试环境。

您能否更具体地说明您担心的问题类型?

【讨论】:

    【解决方案3】:

    只有如果您的表与其他人没有关系,您可以毫无问题地添加。

    您必须删除旧主键并相应地上传表(可能在旧主键上添加唯一索引)。

    这样继续:

    • 转储您的数据库

    • 这样删除主键

    ALTER TABLE XXX DROP PRIMARY KEY
    
    • 像这样添加新列
    ALTER TABLE XXX add column Id INT NOT NULL AUTO_INCREMENT FIRST, ADD primary KEY Id(Id)
    

    将查看表格并更新 AutoInc。

    【讨论】:

      【解决方案4】:

      这是我尝试使用 MySQL Workbench 的解决方案:

      ALTER TABLE `tableName` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT  ;
      

      我不知道这是否正确,但我还没有注意到我的 Java EE 应用程序有任何问题。

      【讨论】:

        【解决方案5】:

        这将为您的 MySQL 表添加一个自动增量 ID:

        ALTER TABLE  `your_table_name` ADD  `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
        

        根据您表上的数据量,可能需要几分钟才能完成。

        【讨论】:

          【解决方案6】:

          您可能需要先将其添加为主键,然后才能将其设置为自动增加字段

          你可以看看这个例子

          ALTER TABLE `category`
          ADD PRIMARY KEY (`cat_id`);
          ALTER TABLE `category`
          MODIFY `cat_id` int(11) NOT NULL AUTO_INCREMENT;
          

          【讨论】:

            【解决方案7】:

            我处理非常大的数据,并且有一个用 NULLS 填充的 id 列。我选择运行以下 SQL 来填充数字...然后我将 id 列设置为主键。

            set @row = 0;
            UPDATE philadelphia.msg_geo_sal SET id = @row := @row + 1;
            

            【讨论】:

              猜你喜欢
              • 2016-01-03
              • 2011-09-17
              • 2012-08-13
              • 2013-01-23
              • 1970-01-01
              • 2021-07-05
              • 1970-01-01
              相关资源
              最近更新 更多