例如,我有3个表:教师,学生和个人。
拥有teacher_id和person_id的教师,
有student_id和person_id的学生,
有person_id的人和关于他的一些信息。
当同一个人是老师和学生时,我应该如何使用约束来避免情况。我知道如何以简单的方式使用约束,比如限制日期或其他整数值。但在这里我不知道如何连接和约束它们。
答案 0 :(得分:1)
如果您想要SELECT
所有persons
,students
teachers
,您可以将其放在WHERE
条款中:
SELECT *
FROM persons p
INNER JOIN student_id s
ON s.person_id = p.person_id
INNER JOIN teacher_id t
ON t.person_id = p.person_id
WHERE student_id != teacher_id
更新
在创建索引时在CASE语句中使用WHERE子句:
CREATE UNIQUE INDEX index_person ON index_table(
CASE WHEN student_id != teacher_id
THEN person_id
ELSE NULL
END
);