检查检查另一个列值的约束

Kil*_*ian 2 sql

我搜索了但我发现的所有内容要么没有回答问题,要么我真的不明白

我正在创建一个表,并且我想在某些列上放置约束,如果另一列具有特定值,则这些列将要求它不为空。我现在拥有的是:

ColumnA NOT NULL CHECK (ColumnB = 8802 or ColumnB = 8804),
Run Code Online (Sandbox Code Playgroud)

基本上,如果ColumnB等于这两个值中的ColumnA任何一个,则必须有一个值,并且在其余时间可以为空。

Tim*_*ter 7

也许:

ALTER TABLE ADD CONSTRAINT A_B_Check
CHECK (
        ColumnA IS NOT NULL 
    OR (ColumnA IS NULL AND (ColumnB <> 8802 AND ColumnB <> 8804))
);
Run Code Online (Sandbox Code Playgroud)