SQL: Изменение последовательности столбцов
Запрос SELECT * плох, в частности, тем, что ты не управляешь порядком полей.
Предлагаемое решение 1: добавь колонку в конец, замени все звездочки в запросах на списки интересующих тебя полей. При этом в запрос заполнения таблицы ARCHIVE_TEST можно как включать новое поле ID, так и не включать.
Предлагаемое решение 2: вставить поле предпоследним (создать другую таблицу с правильным порядком полей, перекинуть в нее данные, удалить старую, переименовать новую). Это автоматически умеет делать, скажем, SQL Management Studio. Но если много данных, то не рекомендую их так гонять.
А потом проделать ту же операцию и с архивной таблицей.
тиран! деспот!
ALTER TABLE mytable MODIFY COLUMN colname int(11) DEFAULT 42 AFTER anothercolname;
ALTER TABLE mytable MODIFY COLUMN colname2 varchar(256) NOT NULL FIRST;
ALTER TABLE mytable CHANGE COLUMN colname colname int(11) DEFAULT 42 AFTER anothercolname;
ALTER TABLE mytable CHANGE COLUMN colname2 colname2 varchar(256) NOT NULL FIRST;
В MSSQL точно ничего такого нет?
В MSSQL точно ничего такого нет?ТС это и делает. но управляющая консоль предупреждает, что добавление колонки влечет за собой изменение ширины строки таблицы, и что применение такого изменения будет делаться через скрытое создание новой таблицы и копирования в нее имеющихся данных, если таблица большая, то это может занять долгое время, при этом на большее время изменения будет заблокирован доступ на таблицу, что приведет к отказу в обслуживании на это время, что чревато - если это production-база.
пытаюсь применить опцию Design (по нажатии правой клавиши мыши но сохранить изменения SQL не даёт, пишет "... must be re-created ..."зайди в настройки и сними галку
с Tools -> Options -> Designers -> Prevent saving changes that require table re-creation
P.S. Раз это так просто, это случайно ничем не чревато?
P.S. Раз это так просто, это случайно ничем не чревато?если таблица большая: сотни МБ и больше, то это может занять достаточно длительное время
чревато - если это production-базаЕсли у Флосси есть доступ к production, то это само по себе чревато...
Оставить комментарий
maximovega
Можно безболезненно изменить последователность столбцов в такой ситуации?К табличке придаётся дополнительный столбец, притом хотелось бы его вставить перед последним столбцом (таблица содержит результаты вычислений и даты проведения вычислений записываются в последний столбец: изменение последовательности смотрится по меньшей мере неэстетично (и нелогично также.
После
ALTER TABLE [FinTools].[dbo].[TEST]
ADD [ID] Int
пытаюсь применить опцию Design (по нажатии правой клавиши мыши но сохранить изменения SQL не даёт, пишет "... must be re-created ..."
Eщё ситуация осложняется последующим использованием архивной таблицы:
INSERT INTO [FinTools].[dbo].[ARCHIVE_TEST] SELECT * FROM [TEST]
Нужно будет добавить столбец там? Если да, то тоже с той же последовательностью? И всё ли это, что потребуется изменить в отношении архивной таблицы после изменений во временной?