Обновление таблицы из представления, ошибка: таблица должна содержаться в исходных таблицах, но не найдена - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь обновить таблицу из представления в Exaplus (которое использует язык сценариев Lua), но продолжаю получать ту же ошибку.

Простое обновление таблицы schema_1 работает, но когда я пытаюсьОбновление таблицы представлением из schema_2 Я всегда получаю одну и ту же ошибку, независимо от того, насколько сильно я упрощаю код.

Параметры в таблице и в представлении имеют одинаковый тип данных (varchar (3)).Я также подтвердил, что это не проблема с разрешениями.

Это код, который я выполняю.

UPDATE schema_1.table1
SET table1_parameter = a.view_parameter
FROM schema_2.view_name AS a
WHERE table1_parameter_2 IS NOT NULL

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

[42000] UPDATE-target-table must be contained in source tables, but was not found [line 4, column 1]

1 Ответ

2 голосов
/ 13 июня 2019

Table1 должно быть частью вашего заявления на работу. Вам нужно join эти две таблицы, в другом случае sql не знает, какая строка из вашего view должна совпадать с какой строкой из table1.

UPDATE a1
SET table1_parameter = a.view_parameter
FROM schema_1.table1 AS a1
JOIN schema_2.view_name AS a
    on a1.keyColumn = a.keyColumn
WHERE table1_parameter_2 IS NOT NULL
...