Oracle - Изменить позицию таблицы [dубликат]

Как пользователь модулей, мне очень нравится, когда я могу включить весь модуль через один импорт. Не делайте, чтобы пользователь вашего пакета выполнял несколько импортных операций, если нет причин, позволяющих импортировать разные альтернативы.

Кстати, нет причин, чтобы отдельные модули не состояли из нескольких исходных файлов. Самый простой случай - использовать файл __ init __. Py , чтобы просто загрузить весь другой код в пространство имен модуля.

18
задан Jon Heller 4 April 2011 в 07:06
поделиться

4 ответа

Amit -

Не думаю, что вы можете добавить столбец в любом месте, но в конце таблицы после создания таблицы. Одним из решений может быть попытка:

  CREATE TABLE MY_TEMP_TABLE AS SELECT * FROM TABLE_TO_CHANGE;   

Отбросьте таблицу, в которую вы хотите добавить столбцы:

  DROP TABLE TABLE_TO_CHANGE;   

В тот момент вы можете перестроить существующую таблицу с нуля, добавив в столбцы, где хотите. Предположим, что для этого упражнения вы хотите добавить столбцы с именем «COL2 и COL3».

Теперь вставьте данные обратно в новую таблицу:

  INSERT INTO TABLE_TO_CHANGE (COL1  , COL2, COL3, COL4) SELECT COL1, 'Foo', 'Bar', COL4 FROM MY_TEMP_TABLE;   

Когда данные вставляются в вашу «новую-старую» таблицу, вы можете отбросить временную таблицу.

  DROP TABLE MY_TEMP_TABLE;   

Это часто бывает, когда я хочу добавить столбцы в определенном месте. Очевидно, что если это производственная он-лайн система, то это, вероятно, не практично, а только одна потенциальная идея.

-CJ

16
ответ дан CJ Travis 16 August 2018 в 00:21
поделиться

Просто выполните следующие действия:

  alter table TABLE_NAME (COLUMN_NAME DATA_TYPE);   

В конце таблицы будет добавлен новый столбец

-11
ответ дан brasofilo 16 August 2018 в 00:21
поделиться

Хотя это несколько старый, я хотел бы добавить немного улучшенную версию, которая действительно изменяет порядок столбцов. Вот шаги (если у нас есть таблица TAB1 со столбцами COL1, COL2, COL3):

  1. Добавить новый столбец в таблицу TAB1:
  alter table TAB1 add (NEW_COL number);  
  1. «Скопировать» таблицу в имя temp при изменении порядка столбца И переименовать новый столбец:
  создать таблицу tempTAB1 как select NEW_COL как COL0, COL1, COL2, COL3 из TAB1;  
  1. отменить существующую таблицу:
  drop table TAB1;  
  1. переименовать temp tablename, чтобы просто удалить tablename:
  переименовать tempTAB1 в TAB1;   
4
ответ дан Gerd 16 August 2018 в 00:21
поделиться

Вы (все еще) не можете выбрать позицию столбца, используя ALTER TABLE: его можно добавить только в конец таблицы. Очевидно, вы можете выбирать столбцы в любом порядке, поэтому, если вы не используете порядок столбцов SELECT * FROM, это не должно быть большой проблемой.

Если вы действительно должны иметь их в определенном порядке, и вы можете 't удалять и воссоздавать таблицу, тогда вы могли бы сбросить и воссоздать столбцы: -

Сначала скопируйте таблицу

  CREATE TABLE my_tab_temp AS SELECT * FROM my_tab  ;   

Затем отпустите столбцы, которые вы хотите после столбца, который вы вставляете

  ALTER TABLE my_tab DROP COLUMN три;   

Теперь добавьте новый столбец (два в этом примере) и те, которые вы удалили.

  ALTER TABLE my_tab ADD (два НОМЕРА (2), три  КОЛИЧЕСТВО (10));   

Наконец, добавьте обратно данные для вновь созданных столбцов

  UPDATE my_tab SET my_tab.three = (SELECT my_tab_temp.three FROM my_tab_temp WHERE my_tab.one  = my_tab_temp.one);   

Очевидно, что ваше обновление, скорее всего, будет более сложным, и вам придется обрабатывать индексы и ограничения и не сможет использовать это в некоторых случаях (столбцы LOB и т. д.). Плюс это довольно отвратительный способ сделать это, но таблица всегда будет существовать, и вы получите столбцы в нужном вам порядке. Но действительно ли порядок столбцов имеет значение?

5
ответ дан Lunc 16 August 2018 в 00:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: