Oracle переместить столбец на первую позицию - PullRequest
7 голосов
/ 01 декабря 2009

есть ли способ переместить столбец в таблице оракула из последней в первую позицию? Кто-то удалил столбец идентификаторов и создал его заново. Итак, теперь это в конце, что является проблемой, потому что некоторые из наших PHP-скриптов используют первый столбец в качестве идентификатора (одна Абстрактная модель с более чем 100 другими Моделями, использующими этот базовый объект ..)

Смотри также

Ответы [ 8 ]

18 голосов
/ 01 декабря 2009

FAQ по Oracle 1002 * говорит:

Oracle позволяет добавлять столбцы только в конец существующей таблицы.

Тебе придется воссоздать твой стол.

RENAME tab1 TO tab1_old;

CREATE TABLE tab1 AS SELECT id, <the rest of your columns> FROM tab1_old;
7 голосов
/ 01 декабря 2009

Самый простой способ изменить логический порядок столбцов таблицы - переименовать таблицу и создать представление с «правильными» позициями столбцов:

ALTER TABLE your_table RENAME TO your_table_t;

CREATE VIEW your_table AS SELECT <columns in the right order> FROM your_table_t;

-- grants on the view (the same as the table)
GRANT ** TO ** ON your_table;

Ваше приложение будет вести себя так, как будто столбцы находятся в «правильном» положении. Вам не нужно касаться физической структуры.

2 голосов
/ 21 ноября 2017

В Oracle 12c теперь проще логически переставлять столбцы. Этого можно добиться, сделав столбец невидимым / видимым. Если вы измените невидимый столбец на видимый, этот столбец будет отображаться последним в порядке вывода.

Рассмотрите возможность использования невидимых столбцов

Создать таблицу wxyz:

CREATE TABLE t ( w INT,
y VARCHAR2, z VARCHAR2, x VARCHAR2

);

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

ALTER TABLE wxyz MODIFY (y НЕВИДИМ, z НЕВИДИМ); ALTER TABLE wxyz MODIFY (y VISIBLE, z VISIBLE);

DESCRIBE wxyz;

Имя

ш

х

у

г

1 голос
/ 04 октября 2016

Если нет тонны данных / столбцов, вы можете просто переименовать столбцы в нужном вам порядке. Затем просто удалите * из «вашего имени таблицы здесь». Это было хорошим решением для меня, так как я еще не вставил много записей.

1 голос
/ 01 декабря 2009

Воссоздание таблицы (через переименование / временную таблицу, чтобы вы не потеряли свои данные) - единственный известный мне способ.

Я не верю, что можно просто изменить порядок столбцов.

0 голосов
/ 21 марта 2017

Невозможно переместить колонку в оракуле. Он будет создан в последней позиции. Если кто-то хочет, нужно либо создать представление, либо создать новую таблицу

0 голосов
/ 12 марта 2013

Я использую это все время:

ALTER TABLE MOVE COLUMN column_name TO ordinal_position;
0 голосов
/ 01 декабря 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...