首页 > 解决方案 > SQL 数据库系统

问题描述

我的关系中有三个布尔属性,我希望它们中只有一个具有真实值,否则表应该给出错误。我怎样才能做到这一点?

标签: sqldatabaseschema

解决方案


如果您的 DBMS 支持它们(大多数都支持),您可以使用检查约束。在其中您检查,其中一个标志是正确的。为此,您可以使用布尔表达式。

CREATE TABLE elbat
             (...
              CHECK (flag1 = true
                     AND flag2 = false
                     AND flag3 = false
                      OR flag1 = false
                         AND flag2 = true
                         AND flag3 = false
                       OR flag1 = false
                          AND flag2 = false
                          AND flag3 = true));

(只是为了理解,语法可能因 DBMS 而异。)


推荐阅读