我创建了一个视图
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'不可更新。有办法吗?
答案 0 :(得分:1)
FROM
子句中有多个表。此观点不可更新。了解有关Updatable views的信息。
您可以创建一个instead of trigger来实现自己的目标。
答案 1 :(得分:0)
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`