Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
09.10.2006, 14:57
|
|||
|---|---|---|---|
|
|||
Наследование индексов |
|||
|
#18+
Доброе время суток. Есть два класса: 1. Class Test.Test Extends %Persistent [ ClassType = persistent, ProcedureBlock ] { Property a As %Boolean; Index Ia On a; } 2. Class Test.Test2 Extends (%Persistent, Test.Test) [ ClassType = persistent, ProcedureBlock ] { Property b As %String; Index Ib On b; } Делаю: USER>s o=##class(Test.Test2).%New() USER>s o.a=1 USER>s o.b="!!!" USER>d o.%Save() Индекс по полю "а" кашей не создан. Создается только в случае переопределения индекса Ia в классе Тест2. Что здесь не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.10.2006, 12:23
|
|||
|---|---|---|---|
Наследование индексов |
|||
|
#18+
Прогноз погоды ООП в СУБД со своими оссобенностями. Индексы наследуются если наследуемый класс является подмножеством базового класса - то есть храняться в одном месте (глобале). Собсно наследования на самом деле никакого не происходить, базовый класс честно строить индексы для всех своих объектов - просто объекты это не только его получуаються. Это же приводить к еще одному ограничению - в таким образом унаследованных классах (во всех ветвях базового) не должно быть индексов с одинаковыми названиями. На уровне кода - и компилятора - индексы не наследуются. В вашем случаем имеется два класса хранящийся в разных местах (глобалах) и наследующих только общую программную часть (триггеры кстати всё таки наследуются) Для классов хранящийся в одном месте - наследование должно быть следующим: Class Test.Test2 Extends Test.Test В данном случае комплиятор прицепляет структуру хранения Test.Test2 к структуре хранения Test.Test, которая и будет автоматически "наследовать индексы" Ваш же вариант: Class Test.Test2 Extends (%Persistent, Test.Test) Если первым стоить %Persistent то компилятор формирует новую структуру хранения на основе имени класса Test.Test2. Если вам нужно хранить таблицы раздельно - то выход можно найти в создании в базовом Test.Test метода-генератора, который в момент компиляции будет вставлять необходимый индекс. Либо руками переопределять . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.10.2006, 15:21
|
|||
|---|---|---|---|
|
|||
Наследование индексов |
|||
|
#18+
Большое спасибо, за развернутый ответ. Дейсвительно, такое наследование классом Тест2 использую для хранения данных в разных глобалах. Будем икать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.10.2006, 11:37
|
|||
|---|---|---|---|
Наследование индексов |
|||
|
#18+
а нафига, позволю себе полюбопытствовать, сначала определяете %Persistent и только потом Test.Test ? какой то скрытый смысл или по незнанию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.10.2006, 17:09
|
|||
|---|---|---|---|
Наследование индексов |
|||
|
#18+
u78а нафига, позволю себе полюбопытствовать, сначала определяете %Persistent и только потом Test.Test ? какой то скрытый смысл или по незнанию? Очевидно что бы воспользоваться оссобеностями ОПП в Cach'e и никакого скрытого смысла. PS: посмотрите наследование триггеров например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=39&mobile=1&tid=1559496]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
67ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 265ms |
| total: | 440ms |

| 0 / 0 |
