Не работает переключаемая ссылочная целостность.

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Не работает переключаемая ссылочная целостность.

Сообщение Vik »

Создал таблицу:

Код: Выделить всё

alter dictionary;
Create Table D_User.St_KatReq "Каталог заявок"
Component Statica
With Table_CODE = 32700    
With replace
With TableOptions Branched
(
.....
 ,cStartPoint    : comp                 "Ссылка на точку отправления"
 ,PrOrgSP        : word                 "Признак организации (1-орг.,2-объект)
 ........

)
with index
(
  KATREQ01 = cStartPoint
 );
Далее, описал переключаемую сслочную целостность:

Код: Выделить всё

alter table STATICA::ST_KATREQ
add constraint (  foreign key KATREQ01
   references 
    case 
      KATORG
        primary key KATORG01
(WHEN PRORGSP = 1)  restrict 
     ,
      KATSTROY
        primary key KATSTROY01
(WHEN PRORGSP = 2)  restrict 
  )
;
Все создалось, все замечательно. Пытаюсь использовать, вывожу в лог:

St_KatReq.PrOrgSP = 1
St_KatReq.cStartPoint -> Name - получаю наименование организации
St_KatReq.PrOrgSP = 2
St_KatReq.cStartPoint -> Name - получаю совершенно левую организацию, но никак не наименование объекта строительства :(

При этом поле PrOrgSP = 2 и cStartPoint заполняются правильно, то есть ссылка именно на KatStroy. Если при описании в case поменять местами описание ссылки на KatOrg и KatStroy, то будет наоборот. То есть, будет выведен объект строительства, и не будет выведено наименование организации. Может кто-нибудь сталкивался, или эта переключаемая ссылочная целостность только на бумаге хорошо работает?
Ответить