在不枚举字段的情况下复制 mysql 表中的行
这个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 中的自动增量字段应设置正确。或者有更好的方法吗?
This mysql table has an autoincrement field. I want to duplicate some rows. I thought I will use a temporary table:
CREATE TEMPORARY TABLE tmptab SELECT * FROM mytab WHERE somecondition = 1;
Before copying the data back to mytab I can now do some updates in tmptab.
UPDATE tmptab ... /* some updates */;
Because mytab has an autoincrement field I cannot simply copy the contents of tmptab to mytab. One solution would be to enumarate fields (and omit the autoincrement field).
I am looking for a solution without enumerating fields. This has advantages, for instance when fields will be added later.
I thougth I could erase the autoincrement field in tmptab (removing the autoincrement column) and then use a query similar to this one:
INSERT INTO mytab SELECT * FROM tmptab;
Would this work? The autoincrement field in mytab should be set correctly. Or is there a better way to do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要使用如下命令:
当您将 NULL 插入原始表时,它将生成新的 auto_increment id 。
您可能需要添加一个命令来删除临时表上的主键索引才能正常工作。
You need to use a command like this:
When you insert NULLs back into the original table, it will generate new auto_increment ids.
You might need to add a command to drop the primary key index on the temp table for this to work.