生成的SQL中存在奇怪的约束

时间:2010-01-04 07:35:54

标签: sql modeling

注意:此问题与Visual Paradigm无关。知道SQL的任何人都可以回答它。


我使用Visual Paradigm在我们的项目中建模数据库(使用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. 为什么tblContracts被更改两次以添加此约束?!
  2. 前两行不够吗?
  3. 第二行和第四行有什么不同?

2 个答案:

答案 0 :(得分:2)

如果第一行和第二行不存在,则创建EndAfterStart约束。第四行启用EndAfterStart约束。

答案 1 :(得分:1)

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