代码之家  ›  专栏  ›  技术社区  ›  Isaac

生成的sql中的奇怪约束

  •  1
  • Isaac  · 技术社区  · 15 年前

    注: 这个问题与视觉范式无关。任何了解sql的人都可以回答这个问题。


    我正在使用可视化范例在我们的项目中建模一个数据库(使用er图)。当visual paradigm为数据库生成sql等价物并将其导入mssql时,它工作得很好。

    我查看了生成的sql代码,以确保任何东西都是正确的,我看到了一些奇怪的东西!:

    为了 tblContracts 我定义了一个名为 EndAfterStart 确保 endDate 总是大于 startDate . 为此约束生成的SQL代码如下:

    IF NOT EXISTS (SELECT * FROM sys.check_constraints WHERE object_id=OBJECT_ID(N'[dbo].[EndAfterStart]'))
    ALTER TABLE [dbo].[tblContracts] WITH CHECK ADD CONSTRAINT [EndAfterStart] CHECK (([startDate]<=[endDate]))
    GO
    ALTER TABLE [dbo].[tblContracts] CHECK CONSTRAINT [EndAfterStart]
    GO
    

    还有问题:

    1. 为什么? 总承包 更改两次以添加此约束?!
    2. 前两行还不够吗?
    3. 二线和四线有什么不同?
    2 回复  |  直到 15 年前
        1
  •  2
  •   Constantin    15 年前

    第一行和第二行创建 EndAfterStart 如果不存在约束。第四行启用 尾随起动 约束。

        2
  •  1
  •   lmsasu    15 年前

    第二行将约束添加到表中;第四行启用约束。