Хорошо, я знаю, что это старая проблема, но я все равно публикую свой ответ.
Мне нравится это решение. Мне нужно только указать идентификационные столбцы.
SELECT * INTO TempTable FROM MyTable_T WHERE id = 1;
ALTER TABLE TempTable DROP COLUMN id;
INSERT INTO MyTable_T SELECT * FROM TempTable;
DROP TABLE TempTable;
Столбец "id" - это столбец идентификаторов, и это единственный столбец, который мне нужно указать. В любом случае это лучше, чем наоборот. : -)
Я использую SQL Server. Вы можете использовать «CREATE TABLE
» и «UPDATE TABLE
» в строках 1 и 2.
Хм, я видел, что я действительно не дал ответ, который он хотел. Он хотел скопировать идентификатор также в другой столбец. Но это решение подходит для копирования с новым автоматическим идентификатором.
Я редактирую свое решение с помощью идей Майкла Диббетса.
use MyDatabase;
SELECT * INTO #TempTable FROM [MyTable] WHERE [IndexField] = :id;
ALTER TABLE #TempTable DROP COLUMN [IndexField];
INSERT INTO [MyTable] SELECT * FROM #TempTable;
DROP TABLE #TempTable;
Вы можете удалить несколько столбцов, разделив их знаком ",".
Замените: id на id строки, которую вы хотите скопировать.
MyDatabase, MyTable и IndexField должны быть заменены вашими именами (конечно).