在表中创建外键约束并在MS SQL Management Studio中创建脚本时,它看起来像这样。
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)
)
这还不够吗?
答案 0 :(得分:8)
首先它创建约束,在这里您可以指定是否应该针对新约束检查表中的数据。 WITH { CHECK | NOCHECK }
第二部分指定启用约束。 ALTER TABLE TableName { CHECK | NOCHECK } CONSTRAINT ConstraintName
答案 1 :(得分:3)
第二个语句由第一个语句中的“WITH CHECK”强制执行。有一个设置可以切换到不执行此操作。