С CHECK ADD CONSTRAINT и CHECK CONSTRAINT против ADD CONSTRAINT

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.
119
задан everton 20 December 2013 в 19:59
поделиться

4 ответа

Первый синтаксис избыточен - С ПРОВЕРКОЙ, значение по умолчанию для новых ограничений, и ограничение включено по умолчанию также.

Этот синтаксис сгенерирован студией управления SQL при генерации sql сценариев - я предполагаю, что это - своего рода дополнительное дублирование, возможно чтобы гарантировать, что ограничение включено, даже если ограничительное поведение по умолчанию для таблицы изменяется.

87
ответ дан Chris Hynes 21 December 2013 в 06:59
поделиться
  • 1
    “Note, нет никакой потребности поместить сильное, держат обратный вызов таймера delegate” I don' t думают, что необходимо полагаться на это. Конечный автомат, конечно, isn' t гарантировал, что сделал это для Вас. – svick 19 March 2014 в 06:34

WITH CHECK действительно поведение по умолчанию однако, это - хорошая практика для включения в рамках кодирования.

альтернативное поведение состоит в том, чтобы, конечно, использовать WITH NOCHECK, таким образом, хорошо явно определить Ваши намерения. Это часто используется, когда Вы играете со встроенными разделами.

13
ответ дан abatishchev 21 December 2013 в 06:59
поделиться

Ограничения внешнего ключа и проверки имеют понятие «доверенные» или «ненадежные», а также могут быть включены и отключены. См. Страницу MSDN для ALTER TABLE для получения полной информации.

WITH CHECK - это значение по умолчанию для добавления нового внешнего ключа и проверочных ограничений, WITH NOCHECK - значение по умолчанию для повторного -включение отключенного внешнего ключа и проверки ограничений. Важно знать разницу.

При этом любые явно избыточные операторы, генерируемые утилитами, просто существуют для безопасности и / или простоты кодирования. Не беспокойтесь о них.

9
ответ дан 24 November 2019 в 01:17
поделиться

WITH NOCHECK также используется, когда в таблице есть данные, которые не соответствуют установленному ограничению, и вы не хотите, чтобы они противоречили новому ограничению, которое вы реализуете. ..

15
ответ дан 24 November 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: