1

我有一个表,其中包含“成绩”和“完成课程”列。我有一个外键约束,它限制了来自 AF 的 Grade 值。我的问题是:如果完成的课程为真,我如何才能使“成绩”列只能包含 AE?否则它只能有值 F?

4

2 回答 2

1

您可以为此添加检查约束,例如:

alter table Table1 add constraint CK_Grade
check (
        (FinishedCourse = 0 and Grade = 'F') or
        (FinishedCourse = 1 and Grade <> 'F')
        -- you can use in ('A', 'B', 'C', 'D'), but since you have foreign key,
        -- it's enough to check Grade <> 'F'
)

或者

alter table Table1 add constraint CK_Grade
check (FinishedCourse = case when Grade = 'F' then 0 else 1 end)
于 2013-10-24T08:24:27.960 回答
0

您可以将 Finished Course 列添加到您的“外国”“Grade_Lookup”(我的名字)表中并使用复合外键约束吗?例如

... FOREIGN KEY (Grade, Finished_Course) REFERENCES Grade_Lookup (Grade, Finished_Course) ...

您需要添加额外的记录Grade_Lookup来处理 Grade = F、Finished_Course = True。

于 2013-10-24T08:26:33.380 回答