/* Выборки данных оборудования (классы оборудования, файлы данных) */
create table UDO_T_EQUIPDSCMFL
(
  /* Регистрационный номер */
  RN                        number(17) not null,
  /* Родитель */
  PRN                       number(17) not null,
  /* Имя файла */
  FILE_NAME                 varchar2(2000) not null,
  /* Описание */
  DESCR                     varchar2(4000) default null,
  /* Идентификатор очереди обработки */
  QUEUE_ID                  varchar2(200) default null,
  /* Состояние (0 - зарегистрирован, 1 - загружается на сервер, 2 - успешно загружен на сервер, 3 - ошибка загрузки на сервер, 4 - загружается во внешнюю систему, 5 - успешно загружен во внешнюю систему, 6 - при загрузке во внешнюю систему произошла ошибка) */
  STATUS                    number(1) default 0 not null,
  /* Сообщение об ошибке */
  ERR                       varchar2(4000) default null,
  /* Ключи */
  constraint UDO_C_EQUIPDSCMFL_RN_PK primary key (RN),
  constraint UDO_C_EQUIPDSCMFL_PRN_FK foreign key (PRN) references UDO_T_EQUIPDSCM(RN),
  constraint UDO_C_EQUIPDSCMFL_FLNM_NB check (rtrim(FILE_NAME) is not null),
  constraint UDO_C_EQUIPDSCMFL_DESCR_NB check ((DESCR is null) or (rtrim(DESCR) is not null)),
  constraint UDO_C_EQUIPDSCMFL_QID_NB check ((QUEUE_ID is null) or (rtrim(QUEUE_ID) is not null)),  
  constraint UDO_C_EQUIPDSCMFL_QID_CH check (((STATUS in (4, 5, 6)) and (QUEUE_ID is not null)) or (STATUS not in (4, 5, 6))),
  constraint UDO_C_EQUIPDSCMFL_STATUS_CH check (STATUS in (0, 1, 2, 3, 4, 5, 6)),  
  constraint UDO_C_EQUIPDSCMFL_ERR_NB check ((ERR is null) or (rtrim(ERR) is not null)),
  constraint UDO_C_EQUIPDSCMFL_ERR_CH check (((STATUS in (3, 6)) and (ERR is not null)) or (STATUS not in (3, 6))),
  constraint UDO_C_EQUIPDSCMFL_FLNM_UN unique (PRN, FILE_NAME),
  constraint UDO_C_EQUIPDSCMFL_QID_UN unique (FILE_NAME, QUEUE_ID)
);
