如何强制多个唯一集(列组合)在SQLite中互斥?

时间:2017-08-30 10:20:46

标签: sql sqlite

考虑一个包含无效列abc,def和xyz的表。我该如何执行:

  1. 如果' abc'设置1(' abc')为独特的不是null,
  2. 设置2(' def,xyz')如果两个' def'和' xyz'不是空的,
  3. 上述集合中只有一个有效(包含非空值)。
  4. 以下是我尝试的代码:

    shape.setZOrderPosition(0);
    

    但是,当我只想要前两个插件成功时,所有14个插件都成功了。

1 个答案:

答案 0 :(得分:1)

换句话说:abcdef列的NULL值应该不同,而defxyz列的NULL值应该相同。

这可以通过两个额外的表约束来完成:

CHECK((abc IS NULL) <> (def IS NULL)),
CHECK((def IS NULL) =  (xyz IS NULL))