sql中的真约束

sql中的真约束,sql,sql-server,sql-server-2008,constraints,Sql,Sql Server,Sql Server 2008,Constraints,我有一个包含“成绩”和“完成课程”列的表格。我有一个外键约束,它限制了a-F的成绩值。我的问题是:如果完成的课程为真,“成绩”列只能包含a-E,我该如何设置?否则它只能具有值F?您可以为此添加检查约束,如: alter table Table1 add constraint CK_Grade check ( (FinishedCourse = 0 and Grade = 'F') or (FinishedCourse = 1 and Grade <>

我有一个包含“成绩”和“完成课程”列的表格。我有一个外键约束,它限制了a-F的成绩值。我的问题是:如果完成的课程为真,“成绩”列只能包含a-E,我该如何设置?否则它只能具有值F?

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

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 = 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'
)

能否将“完成课程”列添加到“外语”的“成绩查找”(我的名字)表中,并使用复合外键约束?e、 g

。。。
外键(成绩,完成课程)引用成绩查找(成绩,完成课程)
…


您需要在
Grade\u Lookup
中添加一条额外的记录来处理Grade=F,Finished\u Course=True。

您可以将Finished Course列添加到“foreign”的“Grade\u Lookup”(我的名字)表中并使用复合外键约束吗?e、 g

。。。
外键(成绩,完成课程)引用成绩查找(成绩,完成课程)
…

您需要在
Grade\u Lookup
中添加一条额外的记录来处理Grade=F,Finished\u Course=True