【问题标题】:Allow to assign only one value between two FK columns MYSQL允许在两个 FK 列 MYSQL 之间仅分配一个值
【发布时间】:2014-07-19 00:13:58
【问题描述】:

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

假设我们有下面的表格,并且该表格的每一行只需要分配给一个 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

【问题讨论】:

  • 你用的是什么数据库?

标签: mysql sql database foreign-keys restriction


【解决方案1】:

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

check (columnfk1 is null or columnfk2 is null);

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

【讨论】:

    猜你喜欢
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多