我正在尝试添加一个不会应用于现有记录的检查约束。我的尝试是:
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的附加图表的标签。
如何修复T-SQL语句中的语法?
我是否正确地解释了图表?
答案 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