powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Поменять столбцы местами
13 сообщений из 13, страница 1 из 1
Поменять столбцы местами
    #39843737
Фотография Frequency
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таблице Столбец - А и Столбец В.

Как можно выполнить UPDATE , перенести данный из А к В и наоборот из В к А одновременно, одним словом заменить данный столбца А на В.

Без создания дополнительных столбцов, синонима таблицы, представлений , дубликации таблицы и временных таблиц ?
...
Рейтинг: 0 / 0
Поменять столбцы местами
    #39843738
Фотография Frequency
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каждую секунду идет транзакция, нужно поменять местами без потери инфы и деактивации таблицы
...
Рейтинг: 0 / 0
Поменять столбцы местами
    #39843740
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
OPS$ORACLE@repo SQL> create table dropme ( x number,y number);

Table created.

OPS$ORACLE@repo SQL> insert into dropme values ( &1, &2 );
Enter value for 1: 22
Enter value for 2: 33
old   1: insert into dropme values ( &1, &2 )
new   1: insert into dropme values ( 22, 33 )

1 row created.

OPS$ORACLE@repo SQL> /
Enter value for 1: 55
Enter value for 2: 66
old   1: insert into dropme values ( &1, &2 )
new   1: insert into dropme values ( 55, 66 )

1 row created.

OPS$ORACLE@repo SQL> commit;

Commit complete.

OPS$ORACLE@repo SQL> select * from dropme;

         X          Y
---------- ----------
        22         33
        55         66

OPS$ORACLE@repo SQL> update (select x,y from dropme) set x=y, y=x;

2 rows updated.

OPS$ORACLE@repo SQL> select * from dropme;

         X          Y
---------- ----------
        33         22
        66         55

OPS$ORACLE@repo SQL> 
...
Рейтинг: 0 / 0
Поменять столбцы местами
    #39843743
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrequencyКак можно выполнить UPDATE , перенести данный из А к В и наоборот из В к А одновременноИменно так дословно и написать.
FrequencyКаждую секунду идет транзакция, нужно поменять местами без потери инфы и деактивации таблицыИ как ты собираешься понимать, где А - это изначальное А, а где А - это изначальное В?
...
Рейтинг: 0 / 0
Поменять столбцы местами
    #39843745
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrequencyКаждую секунду идет транзакция, нужно поменять местами без потери инфы и деактивации таблицы

Обыкновенное чудо- А кто у нас муж
- Волшебник
- Предупреждать надо...

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

То есть, готовим новую таблицу
Готовим view из новой и старой

приостанавливаем вставку

Переключаемся на view
не торопясь, доливаем данные

приостанавливаем вставку
переключаемся на новую старую удаляем
...
Рейтинг: 0 / 0
Поменять столбцы местами
    #39843800
kaldorey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это можно делать, если у каждой строки есть метка времени или ID. По ним определяем порядок и потихоньку в цикле по порциям обновляем записи. Так не повлияет на текущую деятельность. Если есть какие то отчеты или выборки других сервисов, можно их вначале подготовить, чтобы с какого то периода или ID брали с нового столбца, все остальное со старого. Эту метку можно вынести в отдельное место, чтобы оба процесса смотрели на нее, тогда ничего ручного в этом процессе не будет.
Может затянуться на дни, но вариант жизнеспособный
...
Рейтинг: 0 / 0
Поменять столбцы местами
    #39843826
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавляешь поле UPDATE_FLAG default 'N',
Код: plsql
1.
2.
3.
4.
update table
set A = B
   , B = A
   , UPDATE_FLAG = 'Y'


Новые записи идут с флагом 'N', проапдейченные с 'Y'.
Проще, чем по дате заливки данных или по ID.
...
Рейтинг: 0 / 0
Поменять столбцы местами
    #39843829
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DshedooДобавляешь полеЧукча не читатель?
FrequencyБез создания дополнительных столбцов
...
Рейтинг: 0 / 0
Поменять столбцы местами
    #39843837
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще постановка мутная

ЯТД, если это действительно реальная задача, а не бред воспалённого воображения, там все не так и совсем совсем по другому.

(Упомянутая недавно проблема XYZ)

Поэтому гадать и что-то предлагать бесполезно.
...
Рейтинг: 0 / 0
Поменять столбцы местами
    #39843840
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

Сомневаюсь, что это вызвано ограничением прав, иначе этой темы вообще не было бы.
Так как сменили бы заливку, а ему бы сказали проапдейтить от сих до сих.

Скорее всего автор не в курсе, что можно юзать set A=B, B=A.
И под "дополнительными столбцами" он подразумевал что-то типа:

Код: plsql
1.
2.
update table set C = A, D = B;
update table set A = D, B = C;
...
Рейтинг: 0 / 0
Поменять столбцы местами
    #39843853
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim LejninЯТД, если это действительно реальная задача, а не бред воспалённого воображения, там все не так и совсем совсем по другому.

(Упомянутая недавно проблема XYZ)

Поэтому гадать и что-то предлагать бесполезно.Хорошо, что понял.
Но практика показывает, что помогатые сперва "помогают", а потом думают.
...
Рейтинг: 0 / 0
Поменять столбцы местами
    #39843866
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicVadim LejninЯТД, если это действительно реальная задача, а не бред воспалённого воображения, там все не так и совсем совсем по другому.

(Упомянутая недавно проблема XYZ)

Поэтому гадать и что-то предлагать бесполезно.Хорошо, что понял.
Но практика показывает, что помогатые сперва "помогают", а потом думают.

Я исправляюсь :)
Первый вопрос был конкретный, был конкретный ответ

Когда появился идиотское уточнение, я сразу указал что ТС гонит пургу, и попытался указать, что не так в его постановке задачи.
...
Рейтинг: 0 / 0
Поменять столбцы местами
    #39844100
Фотография Frequency
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DshedooElic,

Скорее всего автор не в курсе, что можно юзать set A=B, B=A.

[/src]

Всем спасибо этого достаточно
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Поменять столбцы местами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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