基本的に、制約で必要なロジックは次のようになります...
IF([AssetTypeId] = 1)
THEN
[FileId] IS NOT NULL AND [Url] IS NULL
END
IF([AssetTypeId] = 0)
THEN
[FileId] IS NULL AND [Url] IS NOT NULL)
END
AssetTypeId は、現在のテーブルの FK 参照/制約です。私がこれを行うとき、私が得るエラーは、1つの例外を除いてこれをどのように表現するかに関係なく、構文エラーを示唆しています...
([AssetTypeId] = 1) AND [FileId] IS NOT NULL AND [Url] IS NULL
OR
([AssetTypeId] = 0) AND [FileId] IS NULL AND [Url] IS NOT NULL
それは私にこのエラーを与えます:
'Asset (dbo)' table
- Unable to add constraint 'CK_Asset_FileIdOrUrlRequiredNotBoth'.
The ALTER TABLE statement conflicted with the CHECK constraint "CK_Asset_FileIdOrUrlRequiredNotBoth". The conflict occurred in database "MyDb", table
「dbo.Asset」。
なぜSQLがこれをさせてくれないのか理解できないようです。アイデアはありますか?