Дублирование строк в таблице MySQL без перечисления полей - PullRequest
1 голос
/ 14 ноября 2010

Эта таблица mysql имеет поле автоинкремента.Я хочу продублировать несколько строк.Я подумал, что буду использовать временную таблицу:

CREATE TEMPORARY TABLE tmptab SELECT * FROM mytab WHERE somecondition = 1;

Прежде чем копировать данные обратно в mytab, я теперь могу сделать некоторые обновления в tmptab.

UPDATE tmptab ... /* some updates */;

Поскольку mytab имеет поле автоинкремента Iне может просто скопировать содержимое tmptab в mytab.Одним из решений было бы перечисление полей (и опускание поля автоинкремента).

Я ищу решение без перечисления полей.Это имеет свои преимущества, например, когда поля будут добавлены позже.

Я мог бы стереть поле автоинкремента в tmptab (удаляя столбец автоинкремента), а затем использовать запрос, подобный этому:

INSERT INTO mytab SELECT *  FROM tmptab;

Будет ли это работать?Поле автоинкремента в mytab должно быть установлено правильно.Или есть лучший способ сделать это?

1 Ответ

1 голос
/ 14 ноября 2010

Думаю, я мог бы стереть поле автоиндекса в tmptab (удаляя столбец автоиндекса) и затем использовать запрос, подобный этому

Вам нужно использовать такую ​​команду:

UPDATE tmptab SET key_column=NULL

Когда вы вставляете NULL в исходную таблицу, она генерирует новые идентификаторы auto_increment.

Вам может понадобиться добавить команду для удаления индекса первичного ключа во временной таблице, чтобы это работало.

...