Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Alter table add column .. / 19 сообщений из 19, страница 1 из 1
07.02.2018, 18:01
    #39598412
proxy_911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
Добрый день коллеги,
Кто знает помогите пожалуйста...

Имеется таблица которые состоит из 40 столбцов на базе оракл 12С. На него нужно добавить ещё одну колонку. Если добавлю колонку через sql,
Код: plsql
1.
Alter table table_1 add column column_1 varchar2(3000)


то колонка добавляется в конце таблице т.е на 41 позиции.. А как сделать чтобы колонка располагался например на 20 позиции, или после какой-то колонок?
Буду благодарен за каждый ответ..
...
Рейтинг: 0 / 0
07.02.2018, 18:08
    #39598420
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
proxy_911,

Никак, либо CTAS с нужным порядком

p.s. Порядок важен только для выражений имеющих как список столбцов "*", и/или order by 4
именно поэтому, при разработки, не рекомендуют этим пользоваться

Лень набивать список столбцов - используйте скрипт генератор.
например:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
-- use: @ colgen owner table_name table_alias
select '        , '||'&3.."'||COLUMN_NAME||'"'
from all_tab_columns
where
        owner=upper('&1')
        and TABLE_NAME=upper('&2')
order by column_id
/
...
Рейтинг: 0 / 0
07.02.2018, 18:08
    #39598421
Человек и Кошка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
авторА как сделать чтобы колонка располагался например на 20 позиции, или после какой-то колонок?
1) зачем??
2) drop table / create table...
3) создать view с (непонятно для чего) нужным порядком
...
Рейтинг: 0 / 0
07.02.2018, 18:10
    #39598423
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
proxy_911А как сделать чтобы колонка располагался например на 20 позиции, или после какой-то колонок?Многочисленными манипуляциями такого достичь можно. Но не нужно.
...
Рейтинг: 0 / 0
07.02.2018, 18:26
    #39598448
proxy_911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
Человек и Кошка,
Пересоздать таблицу не получается, 1) поскольку слишком много запросов на эту таблицу, Бизнес процесс перестаёт работать. 2) Каждую неделю - месяц нужно добавить новую колонку, как быть в этом случае? Каждый раз удалить и создать новую?
Порядок нужно для того чтобы, близко по смыслу колонки располагались друг за другом.
...
Рейтинг: 0 / 0
07.02.2018, 18:27
    #39598451
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
proxy_911Порядок нужно для того чтобы, близко по смыслу колонки располагались друг за другом.Это фигня.
...
Рейтинг: 0 / 0
07.02.2018, 18:40
    #39598468
proxy_911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
Elic,
Знаю это фигня, но как это делать??
Привожу пример, cit_id находится на 1 позиции а cit_name на 41, это не красиво..
...
Рейтинг: 0 / 0
07.02.2018, 18:43
    #39598470
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
proxy_911это не красиво..Зато не упадёт в неподходящий момент. Не майся дурью.
...
Рейтинг: 0 / 0
07.02.2018, 18:55
    #39598483
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
proxy_911Elic,
Знаю это фигня, но как это делать??
Привожу пример, cit_id находится на 1 позиции а cit_name на 41, это не красиво..
ну, используйте красивые вью
как вам сказали уже, Не майся дурью.
...
Рейтинг: 0 / 0
07.02.2018, 18:56
    #39598484
Человек и Кошка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
proxy_911,

Заведи себе er-модель и там расставляй атрибуты в желаемом порядке.
...
Рейтинг: 0 / 0
07.02.2018, 19:02
    #39598492
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
proxy_911Elic,
Знаю это фигня, но как это делать??
Привожу пример, cit_id находится на 1 позиции а cit_name на 41, это не красиво..в OLTP наличие двух таких полей смахивает на кривую реализацию
Или это какая-то накопительная-аналитическая таблица?
...
Рейтинг: 0 / 0
07.02.2018, 19:02
    #39598493
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
ElicМногочисленными манипуляциями такого достичь можно. Но не нужно.

Но не нужно - таки да. Многочисленными манипуляциями - таки нет:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SQL> select * from tbl;

        C1         C2         C3         C4         C5
---------- ---------- ---------- ---------- ----------
         1          2          3          4          5

SQL> alter table tbl modify (c3 invisible,c4 invisible,c5 invisible);

Table altered.

SQL> alter table tbl add c2_1 number;

Table altered.

SQL> alter table tbl modify (c3 visible,c4 visible,c5 visible);

Table altered.

SQL> select * from tbl;

        C1         C2       C2_1         C3         C4         C5
---------- ---------- ---------- ---------- ---------- ----------
         1          2                     3          4          5

SQL> 



SY.
...
Рейтинг: 0 / 0
08.02.2018, 03:43
    #39598655
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
Занудства ради - таки существуют сценарии, в которых неудачное расположение колонок лучше физически исправить.
Один из них - поисковые атрибуты во втором-третьем фрагменте chained rows. И само по себе нехорошо, а в сочетании со storage indexes можно запросто получить wrong result.
...
Рейтинг: 0 / 0
08.02.2018, 07:23
    #39598674
proxy_911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
andreymx,

Это конфигурационная расширяемая таблица. С расширением проекта таблица тоже расширяется..
...
Рейтинг: 0 / 0
08.02.2018, 11:58
    #39598843
Aliona
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
andrey_anonymousЗанудства ради - таки существуют сценарии, в которых неудачное расположение колонок лучше физически исправить.
Один из них - поисковые атрибуты во втором-третьем фрагменте chained rows. И само по себе нехорошо, а в сочетании со storage indexes можно запросто получить wrong result.
раз нашлись веские причины, почему надо исправить порядок столбцов,
тогда можно попробовать использовать пакет DBMS_REDEFINITION.
...
Рейтинг: 0 / 0
08.02.2018, 12:29
    #39598869
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
proxy_911Человек и Кошка,
Пересоздать таблицу не получается, 1) поскольку слишком много запросов на эту таблицу, Бизнес процесс перестаёт работать.

Alter table "может" приводить и к инвалидации хранимок, что тож может навредить биснес процессу

.....
stax
...
Рейтинг: 0 / 0
08.02.2018, 14:50
    #39599042
proxy_911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
Stax,

Нет неправильно, я это уже тестировал. При ALTER -е Инвалидов не будет..
...
Рейтинг: 0 / 0
08.02.2018, 17:36
    #39599293
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
proxy_911,

11-я версия
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
SQL> create or replace procedure stax_test_va is
  2   tmp number;
  3  begin
  4   update t set p=p where rownum=0;
  5  end;
  6  /

Procedure created.

SQL> select OBJECT_NAME,STATUS from user_objects where OBJECT_NAME='STAX_TEST_VA';

OBJECT_NAME                    STATUS
------------------------------ -------
STAX_TEST_VA                   VALID

  1* Alter table t add column column_1 varchar2(30)
SQL> /
Alter table t add column column_1 varchar2(30)
                  *
ERROR at line 1:
ORA-00904: : invalid identifier


SQL> Alter table t add column_1 varchar2(30);

Table altered.

SQL> select OBJECT_NAME,STATUS from user_objects where OBJECT_NAME='STAX_TEST_VA';

OBJECT_NAME                    STATUS
------------------------------ -------
STAX_TEST_VA                   INVALID



.....
stax
...
Рейтинг: 0 / 0
09.02.2018, 08:01
    #39599478
proxy_911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter table add column ..
Stax,

Это на тот момент когда у тя нету активных сессии на процу stax_test_va, В моем случае на процах слишком много запросов. Инвалидом будет Долли секунд.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Alter table add column .. / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]