Синтаксис команды:
ALTER TABLE <имя таблицы>
[WITH CHECK| WITH NOCHECK]
ADD {CONSTRAINT <имя ограничения>}
FOREIGN KEY [REFERENCES<имя таблицы> (<имя столбца> [,…n])] | CHECK (<имя столбца> [,…n])}
[ON DELETE CASCADE]
В некоторых ситуациях может возникнуть необходимость в отмене проверки ограничений на какой–то период времени. Или возникнет ситуация, когда необходимо ввести новое ограничение, но вывести из-под его действия уже существующие данные. Сразу следует отметить, что ни одна из вышеперечисленных операций не может быть произведена для ограничений PRIMARY KEY и UNIQUE.
Таким образом, если мы вводим новое ограничение и хотим, чтобы SQL Server 2000 проверил все существующие данные на соответствие этому ограничению, следует добавить это ограничение с опцией WITH CHECK, в противном случае - с опцией WITH NOCHECK.
Временное отключение ограничений и использование опции WITH NOCHECK требует большой осторожности. В противном случае вы можете получить некорректный результат. Например, в таблице Progress могут оказаться оценки несуществующего студента, учащегося в несуществующей группе, изучающего несуществующие дисциплины и т.д.
Пример 24
Задача.
Добавить ограничение FOREIGN KEY для столбца IDGroup в таблице Student[5]. Все данные в таблице Student проверить на соответствие новому ограничению.
Решение.
ALTER TABLE Student