Проверочное ограничение внешнего ключа T-SQL

Когда Вы создаете ограничение внешнего ключа в таблице, и Вы создаете сценарий в MS Studio управления SQL, это похоже на это.

ALTER TABLE T1  WITH CHECK ADD  CONSTRAINT FK_T1 FOREIGN KEY(project_id)
REFERENCES T2 (project_id)
GO
ALTER TABLE T1 CHECK CONSTRAINT FK_T1
GO

То, что я не понимаю, - то, какая цель имеет второе, изменяются с проверочным ограничением. Разве создание не является ограничением FK достаточно? Необходимо ли добавить проверочное ограничение для уверения ссылочной целостности?

Другой вопрос: как было бы похоже затем, когда Вы запишете это непосредственно в определении столбца?

CREATE TABLE T1 (
my_column INT NOT NULL CONSTRAINT FK_T1 REFERENCES T2(my_column)
)

Разве это не достаточно?

19
задан Hubert Kario 6 February 2012 в 00:53
поделиться

2 ответа

Сначала он создает ограничение, и здесь вы можете указать, должны ли данные, уже находящиеся в таблице, проверяться на соответствие вашему новому ограничению. С {ПРОВЕРКА | NOCHECK}

Вторая часть указывает, что ограничение включено. ALTER TABLE TableName {CHECK | NOCHECK} ОГРАНИЧЕНИЕ ConstraintName

8
ответ дан 30 November 2019 в 05:15
поделиться

Второе утверждение вынуждается "WITH CHECK" в первом утверждении. Существует параметр, который можно переключить, чтобы не делать этого.

3
ответ дан 30 November 2019 в 05:15
поделиться
Другие вопросы по тегам:

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