Уникальный ключ

Используйте эту форму для определения столбцов, формирующих уникальные ключи таблицы.

Уникальный ключ

Рис 21. Уникальный ключ

LD-0318 Все столбцы уникального ключа должны иметь одинаковую обязательность.

LD-0319 Если столбцы уникального ключа объявлены необязательными, код приложения должен обеспечивать, чтобы для каждой записи таблицы выполнялось одно из условий:

Обоснование Стандарт ISO SQL92 указывает, что если значение хотя бы одного столбца уникального ключа неопределено, такие значения считаются уникальными. Тем не менее, это не поддерживается сервером ORACLE. Проиллюстрируем это примером. Предположим, что таблица T имеет уникальный ключ (C1,C2), и в ней присутствуют следующие строки:

С1С2
11
22
NULL1
1NULL
NULLNULL
NULLNULL

Если вы попытаетесь вставить в эту таблицу запись (1,NULL), сервер ORACLE7 сообщит о нарушении уникального ключа, хотя по стандарту SQL92 запись должна быть добавлена.

Генерация Для генерации требуемого прикладного кода, установите параметр генератора NIVVKC (Null is valid value in key constraint) в значение N и определите ограничение уникального ключа как необязательное, если все столбцы определены как необязательные.

Столбцы не входящие в уникальный ключ, Столбцы входящие в уникальный ключ (Columns not in the unique key, Columns in the unique key)

Укажите столбцы, формирующие уникальный ключ таблицы.

Название уникального ключа (Name of the Unique key)

LD-0320 Именуйте ограничения уникальных ключей по следующему правилу: <код прикладной системы>_<псевдоним таблицы / представления>_UK#, где #-последовательный номер, который используется для создания уникальных названий ограничения уникального ключа, если в таблице существует более одного такого ограничения.

Пример

И_СТД_UK1
И   - код прикладной системы
СТД - псевдоним таблицы
UK1 - указывает, что это - ограничение
      уникального ключа, и его номер

Изменяемый уникальный ключ ? (Is the Unique key updateable ?)

LD-0327 Значения столбцов внешнего ключа могут быть изменены (без нарушения уникальности).

Обязательный уникальный ключ ? (Is the Unique key mandatory ?)

Стандарты на заполнение этого поля не определены.

Уникальный ключ (продолжение)

Рис 22. Уникальный ключ (продолжение)

Уровень проверки (Validation Level)

LD-0322 Для внешних ключей таблицы установите это свойство на Обе стороны (Both), чтобы проверка производилась и на клиенте, и на сервере. Если вы по каким-то причинам отклоняетесь от этого стандарта, документируйте эту причину в поле Описание уникального ключа.

LD-0323 Для уникальных ключей представления установите это свойство на Клиент (Client). Если вы по каким-то причинам отклоняетесь от этого стандарта, документируйте эту причину в поле Описание уникального ключа.

Обоснование Если параметр Уровень проверки установлен на Обе стороны, то Forms Generator полагается на то, что ограничение будет проверено сервером при фиксации изменений. Forms Generator добавляет в триггер ON-ERROR уровня блока код, который перехватит сообщение сервера о нарушении ограничения и покажет соответствующее сообщение, зависящее от кода сообщения об ошибке. Перехват сообщения осуществляется при нахождении названия ограничения в сообщении о нарушении ограничения. В то же время, название ограничения уникального ключа представления может отличаться от названия ограничения уникального ключа исходной таблицы. Таким образом, Forms Generator не создаст код для перехвата сообщения об ошибке при попытке фиксации изменений. Чтобы предотвратить такое поведение формы, необходимо установить параметр Уровень проверки на Клиент или вручную изменить сгенерированный триггер ON-ERROR.

Сообщение об ошибке (Error Message)

LD-0321 Не записывайте здесь текст сообщения об ошибке. Если вы пользуетесь поддержкой сообщений об ошибка при генерации форм, поместите в это поле код сообщения, ссылающийся на таблицу сообщений об ошибках. Это позволит вам гибко изменять текст сообщения об ошибке в случае необходимости. По соображениям согласованности, используйте тот же формат кода сообщений об ошибках, который используется средствами Oracle: трехбуквенный код приложения, за которым идет пятизначное число (при необходимости используются ведущие нули).

Таблица исключений (Exceptions Table)

Стандарты на заполнение этого поля не определены.

Текстовое описание уникального ключа

Используйте эту форму для дополнительного описания уникальных ключей. В выпадающем списке можно выбрать соответствующий тип описания.

Текстовое описание уникального ключа

Рис 23. Текстовое описание уникального ключа

Описание (Description)

LD-0328 Для таблиц, опишите причины следующих отклонений от стандарта:

Примечания (Notes)

Стандарты на заполнение этого поля не определены.