我有下表。
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
);
(此代码缺少一些小约束)
现在,我需要一种方法来检查一个 PER_SSN/PER_YEAR(一个人的 PK)是否只能具有一个“E”(“已注册”)状态。我不能用触发器来做到这一点(假设我是从同一个表中选择的),我不知道我是否可以用检查约束来做到这一点(我可以在这里使用 COUNT() 吗?)。任何帮助表示赞赏。