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