Не очевидная особенность расширения таблиц в Oracle

Когда таблица расширяется (например предусмотренной для расширения структурой — для стандартных таблиц или новым полем для своих), если база управляется СУБД Oracle (в других не проверял), в том случае если в таблице уже существовали записи, новые поля не устанавливаются в Initial значения по этим записям. Таким образом следующий запрос не вернет результатов:

По умолчанию Oracle ставит данное поле в NULL значение (для всех старых записей в таблице), NULL — означает что данному полю никогда не присваивалось значение. Для обхода этой ситуации необходимо либо проверять поле на NULL

либо поставить галочку напротив «НачЗнач» в определении структуры (при активации таблицы значения всех старых записей по новым полям будут перезаписаны в Initial (значения по умолчанию).

2 комментария

  1. Галку для поля включенной (include) структуры поставить нельзя.

    Можно так:
    update
    {field}
    set
    {field} = »
    where
    {field} is null.

  2. Галку поставить можно, для этого надо зайти в структуру через SE11 и выполнить нехитрую операцию в меню Доп.информация->Свойства БД->Флаг инициализации вкл./выкл.

    Также, если вы расширили какую либо таблицу(собственной Z-структурой), которая входит в стандартный ракурс БД, можно расширить и сам стандартный ракурс, не применяя ключ доступа. Для этого — зайти в стандартный ракурс(SE11), потом по меню Перейти к -> Ракурс дополнения, потом выбрать свой Include и нажать кнопочку изменить. Как то так. 🙂

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *