Изменить вид только для чтения - PullRequest
6 голосов
/ 17 декабря 2010

У меня есть столбец, и я хотел бы отредактировать некоторые его строки. Проблема в том, что таблица является представлением, поэтому я не могу редактировать строки. Как мне поступить, чтобы решить эту проблему?

Ответы [ 4 ]

3 голосов
/ 29 января 2012

Как указывал dan04, вы можете использовать триггеры для обновления представлений (как в большинстве других баз данных).Для sqlite см. http://www.sqlite.org/lang_createtrigger.html#instead_of_trigger

Пример с представлением под названием «myview», содержащее таблицу «my_t2»

CREATE TRIGGER myview_update INSTEAD OF UPDATE ON myview
BEGIN
  UPDATE my_t2 SET field1 = new.field1, field2 = new.field2 WHERE my_t2.key = old.key;
END
3 голосов
/ 22 декабря 2010

SQLite не позволяет обновлять представления.Но это позволяет разрешать триггеры при просмотре.Таким образом, вы можете написать триггер INSTEAD OF UPDATE, который вносит соответствующие изменения в базовую таблицу.

2 голосов
/ 17 декабря 2010

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

0 голосов
/ 17 декабря 2010

SQL View - это виртуальная таблица, основанная на запросе SQL SELECT.По сути, представление очень близко к реальной таблице базы данных (в ней столбцы и строки похожи на обычную таблицу), за исключением того факта, что реальные таблицы хранят данные, а представления - нет.Данные представления генерируются динамически при обращении к представлению.Представление ссылается на одну или несколько существующих таблиц базы данных или другие представления.По сути, каждое представление является фильтром данных таблицы, на которые есть ссылки, и этот фильтр может ограничивать как столбцы, так и строки таблиц, на которые имеются ссылки.

Если вы хотите изменить данные в своей таблице, вы не можете сделатьтак с целью.Представления SQL всегда только для чтения.Если вы хотите изменить свою таблицу вне представления, используйте что-то вроде оператора UPDATE или ALTER TABLE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...