powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / View. Как создать не нулевой столбец.
6 сообщений из 6, страница 1 из 1
View. Как создать не нулевой столбец.
    #39939658
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

Имеется таблица. На ее основе во вьюхе строится дерево.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
CREATE OR REPLACE FORCE VIEW V_APP_SETTING
(
    ID,
    CODE,
    PARENT_ID,
    VALUE,
    DISPLAY_NAME,
    DESCRIPTION,
    APP_SETTING_TYPE_ID,
    DATA_TYPE_ID,
    DATA_TYPE_NAME,
    META
)
AS
               SELECT s.ID,
                      s.CODE,
                      s.PARENT_ID,
                      s.VALUE,
                      s.DISPLAY_NAME,
                      s.DESCRIPTION,
                      s.APP_SETTING_TYPE_ID,
                      s.DATA_TYPE_ID,
                      t.NAME     AS DATA_TYPE_NAME,
                      s.META
                 FROM APP_SETTING s
                      LEFT JOIN DATA_TYPE t ON t.ID = s.DATA_TYPE_ID
                WHERE IS_HIDDEN = 'N'
           START WITH PARENT_ID IS NULL
           CONNECT BY PRIOR s.ID = s.PARENT_ID
    ORDER SIBLINGS BY ORD;


Потом вьюху кидают в модель приложения.
Для работы в модели нужно, чтобы поле ID было NOT NULL.
Но в таблице APP_SETTING и так поле s.ID NOT NULL.
Почему в представлении поле отображается как NULL ?
И возможно ли сделать его не NULL ?
...
Рейтинг: 0 / 0
View. Как создать не нулевой столбец.
    #39939703
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СА,

Оракл затрудняется правильно получить метаданные по деревяшке над внешним соединением - вынеси соединение наружу.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
create table t1(id not null) as select 1 from dual;
create table t2(id) as select 0 from dual;

create or replace view v1 as 
select t1.id i1, t2.id i2
  from t1
  left join t2 on t1.id = t2.id
 start with t1.id = 1
connect by prior t1.id + 1 = t1.id;

create or replace view v2 as 
select i1, t2.id i2
  from (select t1.id i1
          from t1
         start with t1.id = 1
        connect by prior t1.id + 1 = t1.id)
  left join t2 on i1 = t2.id;



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> desc v1
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 I1                                                 NUMBER
 I2                                                 NUMBER

SQL> desc v2
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 I1                                        NOT NULL NUMBER
 I2                                                 NUMBER



Вторая альтернатива - переписывание в Oracle native syntax + еще один трюк.
...
Рейтинг: 0 / 0
View. Как создать не нулевой столбец.
    #39939732
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кобанчег

Вторая альтернатива - переписывание в Oracle native syntax + еще один трюк.


Ну и WITH CHECK OPTION.

SY.
...
Рейтинг: 0 / 0
View. Как создать не нулевой столбец.
    #39939774
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
Кобанчег

Вторая альтернатива - переписывание в Oracle native syntax + еще один трюк.


Ну и WITH CHECK OPTION.

SY.
Я думал это для проверки обновляемых представлений, но с удовольствием посмотрю на пример как это влияет на метаданные представления.
...
Рейтинг: 0 / 0
View. Как создать не нулевой столбец.
    #39939859
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кобанчег
Я думал это для проверки обновляемых представлений, но с удовольствием посмотрю на пример как это влияет на метаданные представления.


A, прочитал по-диагонали. Показалось нужно enforce NOT NULL.

SY.
...
Рейтинг: 0 / 0
View. Как создать не нулевой столбец.
    #39940141
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кобанчег
Вторая альтернатива - переписывание в Oracle native syntax + еще один трюк.
Спасибо.
Именно этим и воспользовался.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / View. Как создать не нулевой столбец.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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