我正在使用SQL Server 2012。
我们说我有两张桌子:
在数据库图表中,我创建了Foo
和Bar
之间的关系并保存更改。
问题:当我编写创建的密钥脚本时,我发现生成了两个SQL语句:
ALTER TABLE [dbo].[Foo] WITH CHECK
ADD CONSTRAINT [FK_Foo_Bar]
FOREIGN KEY([BarId]) REFERENCES [dbo].[Bar] ([BarId])
GO
ALTER TABLE [dbo].[Foo] CHECK CONSTRAINT [FK_Foo_Bar]
GO
我想知道第二个陈述的必要性 - 第一个是不够的?
答案 0 :(得分:0)
我想知道第二个陈述的必要性 - 不是第一个 足够?
你是对的,第一个足以启用外键约束。 在这种情况下,第二种陈述绝对是多余的。
SSMS可能正在使用一些通用模板来生成脚本。
我觉得这一代背后的主要原因是首先创建约束并单独启用它。