次の表があります。
CLASS_HAS_STUDENTS (
PER_SSN INTEGER NOT NULL,
PER_YEAR INTEGER NOT NULL, /*These two are PKs for a student*/
SCHOOL_CODE INTEGER NOT NULL, /*PK for a school*/
CLASS_YEAR INTEGER NOT NULL,
CLASS_NUMBER INTEGER NOT NULL,
CLASS_TEACHTYPE CHAR(3) NOT NULL, /*These three are PKs for a class*/
STUDCLASS_STATUS CHAR(1) NOT NULL
constraint CKC_STUDCLASS_STATUS_CLASS_TI check (StudClass_Status IN ('E', 'Y', 'T', 'P', 'F')),
STUDCLASS_LISTNUMBER INTEGER NOT NULL,
STUDCLASS_ROLLNUMBER INTEGER NOT NULL
);
(このコードにはいくつかの小さな制約がありません)
ここで、1つのPER_SSN / PER_YEAR(個人のPK)が1つの「E」(「登録済み」)ステータスのみを持つことができることを確認する方法が必要です。トリガーでこれを行うことはできず(同じテーブルから選択している場合)、チェック制約でこれを行うことができるかどうかわかりません(ここでCOUNT()を使用できますか?)。どんな助けでも大歓迎です。