T-SQL外键检查约束

PaN*_*1Me 19 t-sql constraints foreign-keys

在表中创建外键约束并在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
Run Code Online (Sandbox Code Playgroud)

我不明白的是第二个改变了检查约束的目的是什么.是不是足够创建FK约束?您是否必须添加检查约束以确保参考完整性?

另一个问题:当你直接在列定义中写它时,它会是什么样子?

CREATE TABLE T1 (
my_column INT NOT NULL CONSTRAINT FK_T1 REFERENCES T2(my_column)
)
Run Code Online (Sandbox Code Playgroud)

这不够吗?

Don*_*Don 8

首先,它创建约束,在这里您可以指定是否应该根据新约束检查表中的数据. WITH { CHECK | NOCHECK }

第二部分指定启用约束. ALTER TABLE TableName { CHECK | NOCHECK } CONSTRAINT ConstraintName

  • 好..并且默认情况下不会启用它?因为在我看来..如果我在创建表时写了一个约束,它应该默认启用. (5认同)