 | Проверка ограничений
Как вы уже знаете, ограничения используются для того, чтобы в таблицы не попадали недопустимые данные. Строки, не удовлетворяющие определенным ограничениям, отвергаются. В данном упражнении мы попробуем выполнить проверку установленных ограничений, чтобы посмотреть, что происходит при вводе недопустимых данных.
Таблица PARTICIPANT была создана с внешним ключом, который означает, что для каждого значения столбца PAR_ID таблицы PARTICIPANT обязательно должна существовать строка в таблице MODULE с таким же значением столбца MODULE_ID. Т.к. пока что таблица MODULE пуста, данное условие не будет выполняться при попытке вставки строки в таблицу PARTICIPANT. Для проверки ограничений выполните следующие действия:
 | |
Вы можете посмотреть ролик, демонстрирующий выполнение этих шагов.
Show me
|
|
-
В Control Center выберите таблицу PARTICIPANT и нажмите Open.
В панели Open Table нажмите кнопку Add Row. (Добавить строку). Введите в строку таблицы PARTICIPANT данные, как показано на рисунке и нажмите Commit.
Рисунок 28. Control Center -- Insert Row (Вставка строки)
- В результате выполнения операции возвращено сообщение SQL0530N, которое означает, что не были выполнены требования ссылочной целостности, обусловленные ограничениями внешнего ключа.
- Нажмите один раз Close для закрытия окна сообщения и еще раз для закрытия окна Open Table.
- Проверьте ограничения, которые мы определили для таблицы MODULE. Т.к. таблица MODULE была создана с ограничением на значения атрибутов ("CONSTRAINT MID_CHECK CHECK (MODULE_ID >= 0)"), то столбец MODULE_ID не может содержать отрицательные значения.
- В Control Center выберите таблицу MODULE и нажмите Open. В панели Open Table введите строку в таблицу MODULE с отрицательным значением столбца MODULE_ID и укажите какое-нибудь имя в столбце MODULE_NAME. Попробуйте добавить эту строку и посмотрите на результат. Следующее сообщение об ошибке говорит, что вам не следовало так поступать:
Рисунок 29. Проверка ограничений на значения атрибутов
-
Нажмите Close, чтобы закрыть окно сообщения об ошибке и еще раз Close для закрытия окна Open Table.
 |
|  |