Добавление ограничений с ограниченной областью проверки

Синтаксис команды:

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 могут оказаться оценки несуществующего студента, учащегося в несуществующей группе, изучающего несуществующие дисциплины и т.д.

Пример 23

Задача.

Добавить ограничение FOREIGN KEY для столбца IDGroup в таблице Student[5]. Все данные в таблице Student проверить на соответствие новому ограничению.

Решение.

ALTER TABLE Student

WITH CHECK

ADD CONSTRAINT StudentIDGroupForeign

FOREIGN KEY (IDGroup) REFERENCES SGroup(IDGroup)

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

Server: Msg 547 ALTER TABLE statement conflicted with COLUMN FOREIGN KEY constraint 'StudentIDGroupForeign'. The conflict occurred in database 'Student', table 'SGroup', column 'IDGroup'.

Пример 24

Задача.

Добавить ограничение FOREIGN KEY для столбца IDGroup в таблице Student. Все данные в таблице Student, введенные на момент создания ограничения, проверке не подлежат.

Решение.

ALTER TABLE Student


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: