包括CHECK CONSTRAINT& amp;转到生成的数据库架构脚本中

时间:2015-07-04 01:47:19

标签: sql-server sql-server-2008 tsql sql-server-2008-r2

我正在使用SDL Server 2008 R2,在那里我生成了一个仅模式数据库脚本。生成的脚本如下:

ALTER TABLE [dbo].[ConsoleServer]  WITH CHECK ADD  CONSTRAINT [FK_ConsoleServer_RackUnits] FOREIGN KEY([RackUnitID])
REFERENCES [dbo].[RackUnits] ([UnitID])
GO
ALTER TABLE [dbo].[ConsoleServer] CHECK CONSTRAINT [FK_ConsoleServer_RackUnits]

我有这两个问题: -

  • 我知道第一行负责在两个DB表之间创建一个FK。但以下的目的是什么:

    ALTER TABLE [dbo].[ConsoleServer] CHECK CONSTRAINT [FK_ConsoleServer_RackUnits]

  • 通常,为什么DB脚本有单词GO。现在,如果我删除它,脚本将在目标数据库上很好地执行,那么为什么它在任何语句之前包含在脚本中?

1 个答案:

答案 0 :(得分:3)

  1. ALTER TABLE ... CHECK CONSTRAINT ...行启用约束。您可以添加约束并将其禁用(例如,在清理数据时)。查看更多here

  2. GO是一个批处理分隔符,它只能被SSMS识别。某些语句(例如CREATE PROCEDURE...)要求它是批处理中的第一个语句。您可以在新文件中键入它,或使用GO终止上一批。不要通过OLEDB或ADO.NET从您的应用程序发送GO