In [9]: print?
Type: builtin_function_or_method
Base Class: <type 'builtin_function_or_method'>
String Form: <built-in function print>
Namespace: Python builtin
Docstring:
print(value, ..., sep=' ', end='\n', file=sys.stdout)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
Первый синтаксис избыточен - С ПРОВЕРКОЙ, значение по умолчанию для новых ограничений, и ограничение включено по умолчанию также.
Этот синтаксис сгенерирован студией управления SQL при генерации sql сценариев - я предполагаю, что это - своего рода дополнительное дублирование, возможно чтобы гарантировать, что ограничение включено, даже если ограничительное поведение по умолчанию для таблицы изменяется.
WITH CHECK
действительно поведение по умолчанию однако, это - хорошая практика для включения в рамках кодирования.
альтернативное поведение состоит в том, чтобы, конечно, использовать WITH NOCHECK
, таким образом, хорошо явно определить Ваши намерения. Это часто используется, когда Вы играете со встроенными разделами.
Ограничения внешнего ключа и проверки имеют понятие «доверенные» или «ненадежные», а также могут быть включены и отключены. См. Страницу MSDN для ALTER TABLE
для получения полной информации.
WITH CHECK
- это значение по умолчанию для добавления нового внешнего ключа и проверочных ограничений, WITH NOCHECK
- значение по умолчанию для повторного -включение отключенного внешнего ключа и проверки ограничений. Важно знать разницу.
При этом любые явно избыточные операторы, генерируемые утилитами, просто существуют для безопасности и / или простоты кодирования. Не беспокойтесь о них.
WITH NOCHECK
также используется, когда в таблице есть данные, которые не соответствуют установленному ограничению, и вы не хотите, чтобы они противоречили новому ограничению, которое вы реализуете. ..