以该列定义示例为例:
permission_id int not null references ugp_permissions (id)
在此示例中,not null
约束是否多余?我认为是这样,因为提供的值必须与引用表匹配。但是,当引用的列上有空记录时,是否会将其归类为外键的匹配项?
答案 0 :(得分:1)
在这种情况下这不是多余的,因为这样的约束可以避免遗漏permission_id
。有时,您希望外键列为空,因为它不是必需的(就像不是公民表中的每个 citizen 都去过大学,所以university_id
列可以为空)。在其他情况下,该列不应为null,就像每个学生应该与一个university_id
相关联一样。
在这种情况下,permission_id
是必需的,因为它是not null
列
披露:我为EnterpriseDB (EDB)工作
答案 1 :(得分:0)
当您省略“ not null”时,该值可以为null,但是当其不为null时,将根据引用的表进行检查。
答案 2 :(得分:0)
否,如果引用列上有空记录,则它们与外键不匹配。