Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / union all view / 11 сообщений из 11, страница 1 из 1
03.08.2007, 14:49
    #34704256
value
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union all view
Привет.

Вот такая возникла проблема: судя по Updatable UNION ALL Views in DB2 Universal Database Version 8 , можно сделать секционированное представление следующим образом

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE TABLE Q1(product_no INT, sales INT, date DATE);
CREATE TABLE Q2 LIKE Q1; 
CREATE TABLE Q3 LIKE Q1; 
CREATE TABLE Q4 LIKE Q1;
CREATE VIEW FY AS 
  SELECT product_no, sales, date FROM Q1 
    WHERE month(date) IN ( 1 ,  2 ,  3 ) 
UNION ALL 
  SELECT product_no, sales, date FROM Q2  
    WHERE month(date) IN ( 4 ,  5 ,  6 ) 
UNION ALL 
  SELECT product_no, sales, date FROM Q3 
    WHERE month(date) IN ( 7 ,  8 ,  9 ) 
UNION ALL 
  SELECT product_no, sales, date FROM Q4  
    WHERE month(date) IN ( 10 ,  11 ,  12 ) 
WITH CASCADED CHECK OPTION;


НО!
В результате выполнения INSERT INTO FY VALUES (3, 10, '2001-07-11') получаю: Требуемая операция вставки или изменения для производной таблицы "FY" таблицы не разрешена, поскольку никакая таблица назначения не может быть определена для строки.
Использую Express-C 9 fx2, может ли подобная проблема возникнуть из-за версии?
Заранее спасибо.
...
Рейтинг: 0 / 0
03.08.2007, 14:57
    #34704288
Nikolay Kulikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union all view
В 9-ке есть нормальное секционирование таблиц.
...
Рейтинг: 0 / 0
03.08.2007, 15:00
    #34704302
value
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union all view
Nikolay KulikovВ 9-ке есть нормальное секционирование таблиц.
В Express-C вроде как недоступно... Поэтому проблема остается.
...
Рейтинг: 0 / 0
03.08.2007, 15:01
    #34704304
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union all view
Привет.

Надо так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE TABLE Q1(product_no INT, sales INT, date DATE);
CREATE TABLE Q2 LIKE Q1; 
CREATE TABLE Q3 LIKE Q1; 
CREATE TABLE Q4 LIKE Q1;
CREATE VIEW FY AS 
  SELECT product_no, sales, date FROM Q1 
UNION ALL 
  SELECT product_no, sales, date FROM Q2  
UNION ALL 
  SELECT product_no, sales, date FROM Q3 
UNION ALL 
  SELECT product_no, sales, date FROM Q4  
WITH CASCADED CHECK OPTION;

ALTER TABLE Q1 ADD CONSTRAINT Q1_CHK_DATE 
   		CHECK (MONTH(date) IN ( 1 ,  2 ,  3 )); 
	ALTER TABLE Q2 ADD CONSTRAINT Q2_CHK_DATE 
   		CHECK (MONTH(date) IN ( 4 ,  5 ,  6 )); 
	ALTER TABLE Q3 ADD CONSTRAINT Q3_CHK_DATE 
   		CHECK (MONTH(date) IN ( 7 ,  8 ,  9 )); 
	ALTER TABLE Q4 ADD CONSTRAINT Q4_CHK_DATE 
   		CHECK (MONTH(date) IN ( 10 ,  11 ,  12 ));

insert into fy (product_no, sales, date) VALUES ( 3 ,  10 , '2001-07-11');
...
Рейтинг: 0 / 0
03.08.2007, 15:39
    #34704449
value
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union all view
Да, но не хотелось бы править через динамику представление или констрайнт на таблице при добавлении или удалении секций. Поэтому и хотелось использовать условие WHERE, которое, как написано в документации, аналогично констрайнту. Хотя вот на практике выясняется обратное...
...
Рейтинг: 0 / 0
03.08.2007, 16:01
    #34704526
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union all view
valueПоэтому и хотелось использовать условие WHERE, которое, как написано в документации, аналогично констрайнту.Ссылку можете привести на документацию?
Почитайте здесь , раздел "insertable views".
...
Рейтинг: 0 / 0
03.08.2007, 16:10
    #34704560
value
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union all view
Mark Barinstein valueПоэтому и хотелось использовать условие WHERE, которое, как написано в документации, аналогично констрайнту.Ссылку можете привести на документацию?
Почитайте здесь , раздел "insertable views".

статья от некоего Serge Rielau

и еще одна статья от группы товарищей
...
Рейтинг: 0 / 0
03.08.2007, 16:40
    #34704671
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union all view
value статья от некоего Serge Rielau
и еще одна статья от группы товарищей В конце статьи некоего Serge Rielau говорится:
---
It seems that although DB2 Version 8 has taken a big step forward with updatability of UNION ALL views, we can envision further improvements :
* Just as DB2 introduced updates to the partitioning key for tables in a multiple database partition group in DB2 Version 7, it may be expected that someday UNION ALL views will support updates that cause rows to migrate from one base table to another.
* Furthermore, it would be desirable to generalize insert through UNION ALL to exploit predicates in the view's body to dispatch the rows in addition or instead of check constraints. The view above would then look like this:
---
1-ое с тех пор они сделали (опция WITH ROW MOVEMENT команды CREATE VIEW).
2-ое - нет, как видно из документации.

А группа товарищей писала о v7, в которой вставка в UNION ALL view была вообще невозможна.
...
Рейтинг: 0 / 0
03.08.2007, 16:54
    #34704711
value
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union all view
Да надо бы повнимательней читать статьи... Mark - большое спасибо. И все же, можно ли каким-нибудь орбазом, без DDL реализовать добавление/удаление секции в секционированом представлении?
...
Рейтинг: 0 / 0
03.08.2007, 18:02
    #34704890
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union all view
valueможно ли каким-нибудь орбазом, без DDL реализовать добавление/удаление секции в секционированом представлении?Если кол-во секций меняется, то нет.
Иначе (реализуя roll in / roll out) вы можете обойтись:
--
alter table tab_with_oldest_section drop constraint old_check_constraint
delete from tab_with_oldest_section
alter table tab_with_oldest_section add constraint old_check_constraint check ( new_rows_come_on_here )
---
...
Рейтинг: 0 / 0
03.08.2007, 18:25
    #34704947
value
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union all view
Спасибо еще раз! Попробую сделать.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / union all view / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]