Couple
次のフィールドを持つと呼ばれるテーブルがありますCoupleId, HusbandId , WifeId ,
StartDate , EndDate
前の表にはカップルに関する情報が含まれています。これCoupleId
は主キーです
HusbandId
およびWifeId
は、名前が付けられた別のテーブルを形成する外部キーです。Person
StartDate
との男性と女性EndDate
の間で発生する結婚の開始/終了日を表しますHusbandId
WifeId
私の問題では、w女性が同時に2人以上の男性と結婚できないという状態にあります「同期結婚」
そして私は次のクエリを持っています
SELECT
DISTINCT A.WifeID
FROM
Couple A
INNER JOIN Couple B
ON A.WifeID = B.WifeID
AND A.HusbandID <> B.HusbandID
AND A.StartDate < B.EndDate
AND A.EndDate > B.StartDate;
これは、「同時に2人以上の男性と結婚した」同期結婚をしている女性を返します。
誰かがテーブルを挿入または更新したいときに起動するトリガーを書きたいのですが、couple
このトリガーに障害情報がない場合にのみ変更を許可したいです(たとえば、誰かがカップルテーブルに行を挿入し、この行が#4の妻が同時に2人以上の人と結婚している場合、表の情報が間違っているため、この挿入を完了してはなりません)
この時点で誰かが私を助けることができますか?