Не удается обновить столбец в таблице SQL

Я создал вид

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 столбец, но я получаю ответ Ошибка столбца "новое_имя" не обновляется. Есть ли способ сделать это?

2 ответа

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

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`
Другие вопросы по тегам