2016-01-04 3 views
0

В Oracle DB, если у меня есть столбец Nullable и контрольное ограничение в том же столбце, ограничивающие значения, например, «ABC» или «DEF», я могу вставить строку с нулевым значением значение в этом столбце (учитывая, что значение null не является одним из значений ограничения)?Oracle Constraint и null values ​​

+0

Да, Oracle будет применять все ограничения, которые включены. Можете ли вы поделиться кодом ограничения, чтобы ответить на вопрос? –

+1

почему вы спрашиваете? Попробуйте! http://sqlfiddle.com – miracle173

ответ

3

Вы можете прочитать контрольные (и другие) ограничения в Oracle Concepts manual.

В вашем случае, да, вы можете вставить строку с нулевым значением, так как проверочное ограничение (например mycolumn in ('ABC', 'DEF') становится эффективно NULL in ('ABC', 'DEF') когда MyColumn равно нулем. Это логическое выражение будет сам оценить пустое значение, так же, как null = 'ABC' делает, потому что нуль является «неизвестные». и проверить ограничения нарушаются, только если они оценивают в false. Следовательно, ваше ограничение позволяет вставить «ABC», «DEF» или нуль в столбец.

2

можно вставить строку с нулем в этой колонке

Да, с тех пор как вы определили свой столбец как nullable. Если для столбца указывается ненулевое значение, тогда указанное значение должно соответствовать значениям, указанным в CHECK.

See a live demo here