SQL Server 2008 にチェック制約を追加しようとしています。このコードを実行すると、次のエラーが発生します。
alter table db.dbo.myTable add constraint
noWWWifProgramIsKnown check
(dbo.checkcountuniversalservice(A, B,
C)=0 and program='WWW' )
エラーが発生します:
ALTER TABLE ステートメントが CHECK 制約 "noWWWifProgramIsKnown" と競合しました。データベース「db」、テーブル「dbo.tableuniversalservice」で競合が発生しました。
SO に関する Marc_s の回答によると、これは b/c 一部の行が制約に違反している可能性が高い: ALTER TABLE ステートメントが競合している
ただし、これは 0 を返すため、制約に違反する行はありません。
select COUNT(*) from db.dbo.tableuniversalservice
where
(dbo.checkcountuniversalservice(A, B, C)=0
and
program='WWW'
)
私は何が欠けていますか?