如何在不影响自动增量的情况下将此行添加到此表中

时间:2012-08-10 16:35:13

标签: mysql sql auto-increment

对,我有一个包含字段的表:id,title,description,keywords和link。在表格中,我有数百个搜索引擎网站。我在这一部分正在努力。 id被设置为自动递增,我希望能够添加一行代码,将其自身嵌入到表中,在某个地方的中间,并在整个表中调整id标记(自动增量)。因此,如果我要将“Google”添加到ID“81”,81将转到82以适应它。有没有办法用SQL做到这一点?

1 个答案:

答案 0 :(得分:0)

AUTO_INCREMENT并不意味着以您想要的方式使用它。它主要是对表中任何一行的引用,主要目的是在其他表中用作外键。如果您希望以某种方式对行进行排序,则应该有另一个可以影响的列。

编辑:

但是现在以防万一你真的想重新编号并且你的自动增量ID没有在任何其他表中使用以供参考,没有人正在使用该表你可以

  • 删除ID列
  • 添加ID列而不使用auto_increment
  • 将“Google”的ID更新为81
  • 将ID列再次修改为auto_increment

也许就像这样

alter table mywebsitetable drop column id;

alter table mywebsitetable add column id bigint;

update mywebsitetable set id = 81 where websitename = 'Google';

... do more numbering as you like and this does give numbers to all the other rows:

alter table ify.test modify id bigint primary key auto_increment; 

如果你想保留所有的ID,你甚至可以添加另一列来保存ID列,用两个更新语句复制它们。 81之前的ID的一次更新和81之后的另一次更新,其中ID正在递增。然后添加删除并添加列,从保存列复制ID,删除保存列,添加谷歌并再次打开auto_increment。但是当你的表很大并且我不推荐这个时需要很长时间,因为正如我之前所说的那样,自动增量不是用于排序或者如同一个注释中提到的那样,auto_increment不应该被视为传播中的行片材。