【问题标题】:Two foreign keys, only one can be not null at a time两个外键,一次只能有一个不能为空
【发布时间】:2020-08-10 11:54:54
【问题描述】:

我有一个数据库表,其中两个外键指向两个不同的表。业务逻辑需要“非此即彼”的关系;在任何给定时间,只有一个外键不能为空。

根据业务逻辑,以下是外键可以保持的四种可能状态:

  • NULL,NULL - 好的
  • 数字,NULL - 好的
  • NULL,数字 - 好的
  • 数字,数字 - 无效的业务逻辑

我正在使用 Django,并且我知道我可以编写一些 onSave() 检查来处理这个问题,但这感觉很老套。

有没有更好的方法来处理这个业务逻辑?

【问题讨论】:

    标签: sql django database postgresql


    【解决方案1】:

    使用check 约束:

    alter table t add constraint chk_table_fk1_fk2 on table
        check (fk1 is null or fk2 is null);
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    相关资源
    最近更新 更多