我的t-sql语法/了解microsoft T-sql语法文档有什么问题

时间:2013-04-11 19:41:47

标签: sql-server tsql

我正在尝试添加一个不会应用于现有记录的检查约束。我的尝试是:

ALTER TABLE myDB.dbo.myTable 
  ADD CONSTRAINT myConstraintName WITH NOCHECK (dbo.myFunction() = 0);

返回

  

第15行,第1行,第1行,第1行   关键字'with'附近的语法不正确。
  消息319,级别15,状态1,行1   关键字'with'附近的语法不正确。如果此语句是公用表表达式,xmlnamespaces子句或更改跟踪上下文子句,则必须以分号结束前一个语句。

我也试图了解T-SQL语法图。基于alter table语法和T-SQL conventions,我似乎遵循语法图中的开关,如下图所示 - 通向标签{{1} }。我正在解释为table_constraint的附加图表的标签。

  1. 如何修复T-SQL语句中的语法?

  2. 我是否正确地解释了图表?

  3. enter image description here

1 个答案:

答案 0 :(得分:2)

您的WITH NOCHECK需要在ALTER TABLE语句之后,并且需要CHECK来指示约束类型。

ALTER TABLE myDB.dbo.myTable with NOCHECK ADD CONSTRAINT myConstraintName CHECK (dbo.myFunction() = 0);

然后您可以使用

检查约束

ALTER TABLE myDB.dbo.myTable CHECK myConstraintName