3

デフォルトの制約を右クリックして、SQL Server に CREATE スクリプトを作成するように依頼すると、次のコードが生成されます。

ALTER TABLE [dbo].[tblEventTurnJudgeStartValues]  WITH NOCHECK ADD  CONSTRAINT [tblEventTurnJudgeStartValues_ExecutionToggle] CHECK  (([ExecutionToggle]=(1) OR [ExecutionToggle]=(0) OR [ExecutionToggle]=(-1)))
GO
ALTER TABLE [dbo].[tblEventTurnJudgeStartValues] CHECK CONSTRAINT [tblEventTurnJudgeStartValues_ExecutionToggle]

記録のために、私は最初の ALTER ステートメントを理解していますが、2 番目の alter ステートメントが何をするのか理解していません。「CHECK CONSTRAINT」フレーズをグーグルで検索しようとしましたが、追加制約構文でしかヒットしませんでした。

ありがとう。

セス

update
Joe さん、ご回答ありがとうございます。役立つこのリンクを見つけました。

http://blog.sqlauthority.com/2009/11/12/sql-server-disable-check-constraint-enable-check-constraint/

制約を有効または無効にできることを知りませんでした。涼しい!

セス

4

1 に答える 1

3

最初のステートメントは制約を作成しますが、NOCHECKで作成されるため、作成時に既存のデータは検証されません。

2番目のステートメントは、制約をオンにするだけで、技術的に冗長です。

個人的には、2番目のステートメントをWITH CHECKオプション付きで記述して、既存のすべてのデータを制約に対して検証し、制約が信頼できない状態になるのを防ぐことをお勧めします。

ALTER TABLE [dbo].[tblEventTurnJudgeStartValues] WITH CHECK CHECK CONSTRAINT [tblEventTurnJudgeStartValues_ExecutionToggle]
于 2010-11-15T20:22:37.863 に答える