允许在两个FK列MYSQL之间仅分配一个值

时间:2014-05-29 13:12:47

标签: mysql sql database foreign-keys restriction

我试图找到一些解决方案,但我无法解决。

让我们看看下面的表格,这个表格的每一行只需要分配给一个FK(columnfk1或columnfk2)(没有意义分配给两个或没有)

CREATE TABLE example(
  id INT UNIQUE AUTO_INCREMENT
  ,name VARCHAR(255)
  ,columnfk1 INT
  ,columnfk2 INT
  ,FOREIGN KEY (columnfk1) REFERENCES example1(columnfk1)
  ,FOREIGN KEY (columnfk2) REFERENCES example2(columnfk2)
);

是否有一些规则可以保证每一行都会分配一个 FK ? 我使用的是MYSQL 5

1 个答案:

答案 0 :(得分:0)

不幸的是,MySQL并不支持check约束,因为这可以使用这样的约束轻松处理:

check (columnfk1 is null or columnfk2 is null);

因此,使用此数据结构在数据库中实现此约束的唯一方法是使用触发器。