我有一个表“comments”,包含一个基本的auto-inc PK“id”字段,还有一个“type”字段。在另一个表中,我希望有一个引用完整性,将一个CONSTRAINT应用于comments.id以及“type”,使用类型值的固定值。
示例:在表“question_comments_rate”,我想强制“comment_id”作为字段“id”存在于“comments”表中[这是容易的部分]而且“type”列等于“question” ”。
这是否存在?我该如何编写这个约束声明?
它就像一个“条件约束” - 不仅“comment_id”字段必须作为“comments.id”存在,而且“comments”表中的“id”也需要是“type”相等的行“问题”(或其他指定值)......
我希望问题很清楚。我可以通过您的帮助/反馈更清楚。感谢。
答案 0 :(得分:3)
这是一个CHECK
约束,MySQL manual说明了这个约束:
CHECK
子句被解析但被所有存储引擎忽略。
您可以在插入/更新时创建触发器以强制执行完整性检查。
或者,在您的情况下,您可以制作type
列ENUM('question')
的数据类型,以便它不会采用任何其他值(''
除外,所有ENUM
}类型可以是 - 例如,如果它们被设置为无效值)。