Не удается обновить столбец в таблице SQL - PullRequest
0 голосов
/ 23 января 2019

Я создал представление

CREATE VIEW `distance` AS
    SELECT 
        `rv`.`id` AS `id`,
        `rv`.`TIMESTAMP` AS `TIMESTAMP`,
        `rv`.`name` AS `name`,
        `rr`.`distance` AS `distance`,
        `false` AS `new_name`
    FROM
        (`recognition_view` `rv`
        JOIN `raw_recognition` `rr` ON ((`rv`.`rr_id` = `rr`.`id`)))

И мне нужно обновить столбец new_name, но я получаю ответ. Столбец ошибки 'new_name' не обновляется.Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Более 1 таблицы в предложении FROM. Это представление не может быть обновлено. Читайте о Обновление просмотров . Вы можете создать вместо триггера для достижения своей цели.

0 голосов
/ 23 января 2019

new_name не является частью вашей таблицы. Он построен на ваш взгляд и всегда установлен на false. Задайте себе вопрос: каким будет результат обновления этой колонки? Где это будет сохраняться?

Если вы хотите иметь возможность обновить это значение, вам следует рассмотреть возможность добавления его в одну из других ваших таблиц или создать новую таблицу и присоединить ее в существующем представлении.

Вы можете сохранить информацию new_name в таблице recognition_view или raw_recognition. Для простоты я объясню, как это сделать:

CREATE TABLE raw_recognition (
    ...
    new_name NUMBER(1)
)

, а затем в вашем CREATE VIEW изменить

`false` AS `new_name`

до

`rr.new_name` AS `new_name`
...