0

既存のレコードには適用されないチェック制約を追加しようとしています。これに対する私の試みは次のとおりです。

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

戻り値

メッセージ 156、レベル 15、状態 1、行 1
キーワード「with」付近の構文が正しくありません。
メッセージ 319、レベル 15、状態 1、行 1
キーワード「with」付近の構文が正しくありません。このステートメントが共通テーブル式、xmlnamespaces 句、または変更追跡コンテキスト句である場合、前のステートメントはセミコロンで終了する必要があります。

また、T-SQL 構文図のコツをつかもうとしています。alter table構文と T-SQL規則に基づいて、構文図のスイッチを、下の図に示すように、ラベル につながっているように見えます<table_constraint>。table_constraint の追加図のラベルとして解釈しています。

  1. T-SQL ステートメントの構文を修正するにはどうすればよいですか?

  2. 図を正しく解釈していますか?

ここに画像の説明を入力

4

1 に答える 1

2

ALTER WITH NOCHECKTABLE ステートメントの後にある必要がありCHECK、制約タイプを示す必要があります。

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

その後、後で制約に対してチェックできます

ALTER TABLE myDB.dbo.myTable CHECK myConstraintName

于 2013-04-11T19:46:10.790 に答える