这个mysql表有一个自动增量字段。我想复制一些行。我以为我会用一张临时表:
CREATE TEMPORARY TABLE tmptab SELECT * FROM mytab WHERE somecondition = 1;
在将数据复制回mytab之前,我现在可以在tmptab中进行一些更新。
UPDATE tmptab ... /* some updates */;
因为mytab有一个自动增量字段,所以我不能简单地将tmptab的内容复制到mytab。一种解决方案是使用字段(并省略自动增量字段)。
我正在寻找一个没有枚举字段的解决方案。这具有优势,例如,稍后将添加字段。
我认为我可以删除tmptab中的自动增量字段(删除自动增量列),然后使用类似于此的查询:
INSERT INTO mytab SELECT * FROM tmptab;
这会有用吗? mytab中的自动增量字段应正确设置。或者有更好的方法吗?
答案 0 :(得分:1)
我想我可以删除tmptab中的autoindex字段(删除autoindex列),然后使用类似于此的查询
你需要使用这样的命令:
UPDATE tmptab SET key_column=NULL
当您将NULL插回原始表时,它将生成新的auto_increment ids。
您可能需要添加一个命令来删除临时表上的主键索引,以使其正常工作。