Проверяемые ограничения

Используйте эту вкладку для определения проверяемых ограничений (check constraints) таблицы.

Проверяемые ограничения

Рис 24. Проверяемые ограничения

Название проверяемого ограничения ( Check Constraint Name)

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

Пример

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

Условие проверяемого ограничения (Check constraint condition)

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

Проверяемые ограничения (продолжение)

Рис 25. Проверяемые ограничения (продолжение)

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

LD-0331 Значение этого параметра зависит от типа проверяемого ограничения.

Первый пункт относится к обычным проверяемым ограничениям, которые могут быть проверены на клиенте без выполнения каких-либо SQL-запросов. Столбец, к которому относится ограничение, представляется в форме элементом блока, основанного на рассматриваемой таблице, и на него можно ссылаться таким образом. Для минимизации сетевого трафика, такое проверяемое ограничение должно проверяться на стороне клиента как на уровне отдельных элементов, так и на уровне транзакции, а также быть реализованным на стороне сервера. Такое поведение в настоящий момент не полностью поддерживается Oracle Designer. Если параметр Уровень проверки проверяемого ограничения таблицы установлен на Клиент (Client), Server DDL Generator не сгенерирует скрипты для создания проверяемых ограничений на стороне сервера. Решением может быть временное переключение этого свойства на Обе стороны (Both) перед запуском Server DDL Generator.

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

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

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

Таблица исключений

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

Текстовое описание проверяемого ограничения

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

Текстовое описание проверяемых ограничений

Рис 26. Текстовое описание проверяемых ограничений

Условие проверки Where (Where/Validation Condition)

Синтаксические правила проверяемых ограничений такие же, как и в WHERE-предложении SQL-запроса, выполняющего выборку данных из таблицы, для которой определено ограничение. Это означает, что проверяемое ограничение может ссылаться на столбцы в таблице, для которой оно определено, на константы и псевдостолбцы (например, SYSDATE или USER). Также допустимы все SQL-функции (например, TO_CHAR, MAX, TRUNCATE), за исключением функции DECODE. Forms Generator реально проверяет синтаксис этого условия выполнением запроса такого типа:

SELECT 1 FROM emp
WHERE <условие проверки>

Необходимо указывать условие проверки как корректную, а не ошибочную ситуацию:

SELECT 1 FROM emp
WHERE nvl(enddate,hiredate)>=hiredate

LD-0337 Заключите каждое отдельное условие на столбец в скобки. При наличии нескольких условий, соединенных операторами AND или OR, размещайте условия на отдельных строках. Используйте дополнительные скобки для отделения условий, соединенных оператором OR от условий, соединенных оператором AND.

Описание (Description)

LD-0338 Если поле Комментарий не содержит ссылку на бизнес-правило, здесь следует на естественном языке описать, какая проверка выполняется проверяемым ограничением.

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

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