在生成的数据库模式脚本中包含 CHECK CONSTRAINT & GO 的目的是什么
What is the purpose of including CHECK CONSTRAINT & GO in the generated database schema script
我在 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]
我有这两个问题:-
我知道第一行负责在两个数据库表之间创建外键。但以下内容的目的是什么:
ALTER TABLE [dbo].[ConsoleServer] CHECK CONSTRAINT [FK_ConsoleServer_RackUnits]
一般来说,DB脚本为什么会有GO
这个字。现在,如果我删除它,脚本将在目标数据库上很好地执行,那么为什么它包含在任何语句之前的脚本中?
ALTER TABLE ... CHECK CONSTRAINT ...
行启用约束。您可以添加约束并将其禁用(例如,在清理数据时)。查看更多 here
GO
是批处理分隔符,只有 SSMS 可以识别。一些语句,例如 CREATE PROCEDURE...
要求它是批处理中的第一个语句。您可以在新文件中键入它,或使用 GO
终止前一批。不要通过 OLEDB 或 ADO.NET 从您的应用程序发送 GO
。
我在 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]
我有这两个问题:-
我知道第一行负责在两个数据库表之间创建外键。但以下内容的目的是什么:
ALTER TABLE [dbo].[ConsoleServer] CHECK CONSTRAINT [FK_ConsoleServer_RackUnits]
一般来说,DB脚本为什么会有
GO
这个字。现在,如果我删除它,脚本将在目标数据库上很好地执行,那么为什么它包含在任何语句之前的脚本中?
ALTER TABLE ... CHECK CONSTRAINT ...
行启用约束。您可以添加约束并将其禁用(例如,在清理数据时)。查看更多 hereGO
是批处理分隔符,只有 SSMS 可以识别。一些语句,例如CREATE PROCEDURE...
要求它是批处理中的第一个语句。您可以在新文件中键入它,或使用GO
终止前一批。不要通过 OLEDB 或 ADO.NET 从您的应用程序发送GO
。