Редактирование данных в исходных таблицах через представление.

Pavel Kilevatyh
Дата: 31.10.2005 16:37:45
Доброго дня.
Изначально планировалась такая таблица:
REQUEST_TABLE(
   REQUEST_TABLE_TYPE,
   REQUEST_TABLE_OBJECT,
   REQUEST_TABLE_COMMODITY,
   REQUEST_TABLE_REST,
   REQUEST_TABLE_REQUEST
)

Не пинайте. Это дико неправильно, но легче всего представить.
Теперь если попытаться приблизится к какой-то НФ, эту таблицу можно представить как:

REST_HEADS(
   REST_HEADS_NO,                  /* PK  */
   REST_HEADS_TYPE,               /* FK (TYPES_NO) */
   REST_HEADS_OBJECT            /* FK (OBJECTS_NO) */
)

REST_COMMODITYS(
   REST_COMMODITYS_NO,         /* PK  */
   REST_COMMODITYS_HEAD,     /* FK (REST_HEADS_NO)  */ 
   REST_COMMODITYS_COMM,    /* FK (COMMODITYS_NO) */
   REST_COMMODITYS_REST,       /*  Вводится пользователем */
   REST_COMMODITYS_REQUEST  /*  Вычислятеся ХП */
)

А для эмуляции первоначального вида

CREATE VIEW REQUEST_TABLE(
    REQUEST_TABLE_TYPE,
    REQUEST_TABLE_OBJECT,
    REQUEST_TABLE_COMMODITY,
    REQUEST_TABLE_REST,
    REQUEST_TABLE_REQUEST
)
AS
SELECT
    STORE_HEADS_TYPE,
    STORE_HEADS_OBJECT,
    STORE_COMMODITYS_COMM,
    STORE_COMMODITYS_REST,
    STORE_COMMODITYS_REQUEST
FROM
    STORE_HEADS, STORE_COMMODITYS
WHERE
    STORE_COMMODITYS_HEAD = STORE_HEADS_NO;

Но FB 1.0.3 не дает редактировать содержимое вывода этого представления. Это баг, фича или я что-то не правильно делаю ?
Мимопроходящий
Дата: 31.10.2005 16:41:34

Привет, Pavel!
Ты пишешь:

Pavel
PK> Но FB 1.0.3 не дает редактировать содержимое вывода этого представления.
PK> Это баг, фича или я что-то не правильно делаю ?
RTFM: Гзвфефиду Мшуц!
Что в переведе означает: Читай, (мля!) об Updatable View's

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3

Pavel Kilevatyh
Дата: 31.10.2005 16:55:23
Мимопроходящий

RTFM: Гзвфефиду Мшуц!
Что в переведе означает: Читай, (мля!) об Updatable View's

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3



Ушел-ушел...
Гугель мне поможет, надеюсь.
kdv
Дата: 31.10.2005 16:58:45
зачем тебе гугель - доку читай.
Pavel Kilevatyh
Дата: 31.10.2005 17:32:28
kdv
зачем тебе гугель - доку читай.


Попинал DDL в IBExpert на предмет WITH CHECK OPTION.
Получил ошибку:


This operation is not defined for system tables.
Dynamic SQL Error.
SQL error code = -607.
Invalid command.
Only one table allowed for VIEW WITH CHECK OPTION.


Почитал LANGREF.PDF от IB 6.0 и увидел


A view is updatable if:
- It is a subset of a single table or another updatable view.
- All base table columns excluded from the view definition allow NULL values.
- The view’s SELECT statement does not contain subqueries, a DISTINCT predicate, a HAVING
clause, aggregate functions, joined tables, user-defined functions, or stored procedures.
If the view definition does not meet these conditions, it is considered read-only.


Ограничение на использование ОДНОЙ таблицы делает полезность updatable view сомнительной. ИМХО естественно. Если не тяжело, объясните зачем это может понадобится, поскольку примеры из LANGREF не убедили меня в полезности.
Calm
Дата: 31.10.2005 17:59:33
Пример:
Имеются записи в таблице с колонкой, определяющей время актуальности записи.
Обновляемый просмотр отображает только те, что актуальны и могут изменяться.
kdv
Дата: 31.10.2005 18:06:55
Ограничение на использование ОДНОЙ таблицы делает полезность updatable view сомнительной


тебе что объяснить - что updateable view могут быть полезны, или что сервер за тебя не станет решать, куда чего обновлять, если view выбирает данные из двух и более таблиц?
Карабас Барабас
Дата: 31.10.2005 18:07:06
Pavel Kilevatyh
Почитал LANGREF.PDF от IB 6.0 и увидел

A view is updatable if:
- It is a subset of a single table or another updatable view.
- All base table columns excluded from the view definition allow NULL values.
- The view's SELECT statement does not contain subqueries, a DISTINCT predicate, a HAVING
clause, aggregate functions, joined tables, user-defined functions, or stored procedures.
If the view definition does not meet these conditions, it is considered read-only.

Ограничение на использование ОДНОЙ таблицы делает полезность updatable view сомнительной. ИМХО естественно. Если не тяжело, объясните зачем это может понадобится, поскольку примеры из LANGREF не убедили меня в полезности
читаем немного дальше:

Note Read-only views can be updated by using a combination of user-defined referential

constraints, triggers, and unique indexes.

или это не то ?

Posted via ActualForum NNTP Server 1.3

barry
Дата: 31.10.2005 18:11:48
Ограничение на использование ОДНОЙ таблицы делает полезность updatable view сомнительной.


DataDef.pdf: Updating views with triggers.
Pavel Kilevatyh
Дата: 31.10.2005 18:23:02
Господа, спасибо за помощь.
Пошел читать документацию.
Страсть как англицкий не люблю.