次のように、複数の写真を家屋に関連付ける MSSQL Server 2008 テーブルがあります。
HouseID - with foreign key to House table
PhotoID - with foreign key to Photo table
写真を複数の家に関連付けることができないように、PhotoID に独自の制約があり、すべてうまく機能しています。
家の記録のデフォルトの写真を指定したいと思います。テーブルはそのように更新されます
HouseID
PhotoID
isDefault
問題は、家の一連の写真に対して isDefault = 1 が 1 つしか存在できないことです。
MSSQL Server 2008 で、特定のハウス ID に対して isDefault = 1 が 1 つだけ存在し、他のレコードが isDefault = 0 であることを確認するにはどうすればよいですか? トリガーを使用する方が良いですか、それともより良い方法がありますか? トリガーの場合、最適化を確実にするための構文に関する提案はありますか?
最後に、Insert イベントと Update イベントで機能するには、これが必要です。
アップデート:
以下は魅力のように機能しました。コメント?
CREATE VIEW HousePhoto_isDefault AS
SELECT yourSchema.HousePhoto.houseID, yourSchema.HousePhoto.isDefault
FROM yourSchema.HousePhoto WHERE isDefault = 1
GO
CREATE UNIQUE CLUSTERED INDEX idx_HousePhoto_isDefault
ON HousePhoto_isDefault (houseID)
GO