我有一个外键约束,我已经添加到VS2010 SQL Server数据库项目中,我已修改该项目以在约束上指定'WITH CHECK'。
ALTER TABLE [dbo].[Foo] WITH CHECK
ADD CONSTRAINT [FK_FooBar]
FOREIGN KEY ([BarKey])
REFERENCES [dbo].[Bar] ([Key])
生成的架构的.sql输出插入了“WITH NOCHECK”。如果您没有指定任何内容,这似乎是默认值。为项目生成的.dbschema文件没有指定CHECK或NOCHECK,所以我对它来自哪里感到困惑。
任何人都知道怎么做?
干杯
答案 0 :(得分:3)
拉斯塔,
创建新约束时,WITH CHECK
是默认值,因此.dbschema不必为您指定。 http://msdn.microsoft.com/en-us/library/ms190273.aspx
从查看为我的数据库项目创建的.sql文件,我看到我的外键在创建时也有WITH NOCHECK
。这是为了防止约束违规,直到创建整个结构。为您生成的.sql文件的最后几行应该是现在检查结构已完成的外键。对于上面的例子,它们看起来像这样:
ALTER TABLE [dbo].[Foo] WITH CHECK CHECK CONSTRAINT [FK_FooBar];
这些应该使.sql文件为您提供所需的结果。