【问题标题】:Why SQL Server generates two statements for only one foreign key?为什么 SQL Server 只为一个外键生成两条语句?
【发布时间】:2018-02-04 19:32:39
【问题描述】:

我使用的是 SQL Server 2012。

假设我有两张桌子:

  • Foo (Id int, BarId int)
  • Bar (id int, BarName varchar(50))

在数据库图中,我创建了FooBar 之间的关系并保存更改。

问题:当我编写创建密钥的脚本时,我发现生成了两条 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

我想知道第二个语句的需要是什么 - 第一个语句还不够吗?

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    我想知道第二个语句的需要是什么 - 不是第一个 够了吗?

    你是对的,第一个足以启用外键约束。 第二个语句在这种情况下肯定是多余的。

    SSMS 可能正在使用一些通用模板来生成脚本。

    我觉得这一代落后的主要原因是首先创建约束并单独启用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      • 2016-12-21
      • 2010-11-02
      • 1970-01-01
      相关资源
      最近更新 更多