Проверочные ограничения |
||
Проверочное ограничение имеет вид:
Предикат может принимать значения TRUE, FALSE или UNKNOWN. Предикат считается нарушенным, когда он принимает значение FALSE; при этом действие, которое привело к нарушению предиката, не выполняется, и генерируется сообщение об ошибке. Вернемся к нашей проблеме, а именно вставке строки (NULL, '2000', NULL) в таблицу Product. Понятно, что подобных строк следует избегать, т.к. неизвестно, чем является модель 2000 и каким производителем она выпускается. Мы можем использовать предикат IS NOT NULL в проверочных ограничениях для столбцов maker и type:
Теперь при попытке вставить строку (NULL, '2000', NULL) мы получим сообщение об ошибке: Cannot insert the value NULL into column 'model', table 'Product'; column does not allow nulls. INSERT fails. И строка вставлена не будет, вернее, будет отклонен весь оператор INSERT. Заметим, что ограничение NOT NULL (как и PRIMARY KEY для простого ключа) может быть записано непосредственно в определение столбца:
Более того, любое ограничение уровня столбца можно записать непосредственно в определении столбца.
Чтобы ограничить допустимые значения в данном столбце значениями 'Yes' и 'No', этот оператор можно было бы переписать в виде:
|