使用固定的“硬编码”值的MySQL约束 - 这可能吗?

时间:2012-05-01 09:01:59

标签: mysql foreign-keys constraints referential-integrity

我有一个表“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”相等的行“问题”(或其他指定值)......

我希望问题很清楚。我可以通过您的帮助/反馈更清楚。感谢。

1 个答案:

答案 0 :(得分:3)

这是一个CHECK约束,MySQL manual说明了这个约束:

  

CHECK子句被解析但被所有存储引擎忽略。

您可以在插入/更新时创建触发器以强制执行完整性检查。

或者,在您的情况下,您可以制作typeENUM('question')的数据类型,以便它不会采用任何其他值(''除外,所有ENUM }类型可以是 - 例如,如果它们被设置为无效值)。