powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / UPDATE+SELECT
8 сообщений из 8, страница 1 из 1
UPDATE+SELECT
    #35955424
Игаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подсобите, пожалуйста, какой корректный синтаксис у запроса UPDATE+SELECT ?
Делаю так:

Таблица - TEST(p1 INT SERIAL NOT NULL, p2 INT default NULL, p3 INT default NULL)

Код: plaintext
1.
2.
3.
update TEST SET 
               p2 = (select p2 from TEST where p1 =  2 ),
               p3 = (select p3 from TEST where p1 =  2 )
       where p1 =  1 

И пишет ошибку - Cannot modify table or view used in subquery

По форуму искал - везде пишут такую конструкцию для примера...
...
Рейтинг: 0 / 0
UPDATE+SELECT
    #35955563
Le111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробуйте:
Код: plaintext
1.
2.
update TEST SET 
  (p2,p3) = ((select p2,p3 from TEST where p1 =  2 ))
where p1 =  1 
...
Рейтинг: 0 / 0
UPDATE+SELECT
    #35955573
Игаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ровна та же ошибка на слово "where" в select-e
...
Рейтинг: 0 / 0
UPDATE+SELECT
    #35955583
Le111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ой, извините, не о том я :)
...
Рейтинг: 0 / 0
UPDATE+SELECT
    #35955870
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИгаевCannot modify table or view used in subquery

Синтаксис правильный - ну RTFM наконец-то, а?...
Суть в том, что вы используете обновление данных в таблице используя данные из той же таблицы. Не все версии Informix'а утруждают себя детальным анализом "а не возникнет ли проблема?" и просто выдают Вам ошибку.
...
Рейтинг: 0 / 0
UPDATE+SELECT
    #35955885
Игаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
Синтаксис правильный - ну RTFM наконец-то, а?...
Руководства у меня и нет вовсе. Да если и было бы - я не понимаю в чём проблема при обновлении одной записи другою в одной и той же таблице? Блокировки ствятся какие-то? Как этого избежать?
...
Рейтинг: 0 / 0
UPDATE+SELECT
    #35956375
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игаев
Код: plaintext
Синтаксис правильный - ну RTFM наконец-то, а?...
Руководства у меня и нет вовсе.
1. FAQ
2. Версию Информикса назвать можете? Если нет - FAQ.
3. Документация IDS11.50

Игаев
Да если и было бы - я не понимаю в чём проблема при обновлении одной записи другою в одной и той же таблице? Блокировки ствятся какие-то?

Проблема в подходе... Программа работает так, как её написали, а не так как думает/хочет пользователь программы.

Игаев
Как этого избежать?


один из
SELECT ... FROM mytable ... INTO TEMP tmp_table WITH NO LOG;

UPDATE mytable SET fld1 = (SELECT fld2 FROM tmp_table ...);

DROP TABLE tmp_table;
...
Рейтинг: 0 / 0
UPDATE+SELECT
    #35956394
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон - пропустил выделенное:

АнатоЛой
один из вариантов:

Код: plaintext
1.
2.
3.
4.
SELECT ... FROM mytable ... INTO TEMP tmp_table WITH NO LOG;

UPDATE mytable SET fld1 = (SELECT fld2 FROM tmp_table ...);

DROP TABLE tmp_table;
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / UPDATE+SELECT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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