是否可以在MySQL中使用多个键定义表关系?

时间:2014-07-11 22:58:45

标签: mysql innodb

比如说我在表SITES中有一个唯一的密钥集来包含字段site, permission,我想使用外键来保持相同的引用键以匹配表中的site, permission USERS。是否可以在mysql中创建使用多键索引的关系?我也可以通过编程方式解决这个问题,但是如果可能的话,我宁愿将参照完整性限制在数据层。使用单一关系可能会导致使用错误的权限插入记录但是正确的站点,反之亦然。

提前致谢。

1 个答案:

答案 0 :(得分:1)

正如我在评论中告诉你的那样:是的,你可以使用多列的约束。

您可以查看MySQL Reference Manual: Using FOREIGN KEY constraints

引用引用,语法为:

[CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option]

reference_option:
    RESTRICT | CASCADE | SET NULL | NO ACTION

如您所见,您可以在约束中包含多个列。当然(更准确地说,显然),它们必须匹配,并且它们必须在两个表中都被索引。