注意:此问题与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
问题:
tblContracts
被更改两次以添加此约束?!答案 0 :(得分:2)
如果第一行和第二行不存在,则创建EndAfterStart
约束。第四行启用EndAfterStart
约束。
答案 1 :(得分:1)
第二行将约束添加到表中;第四行启用约束。