我正在尝试在我的数据库中的几个列上创建一个检查,强制它们为null,除非另一列的值为yes.我尝试过类似的东西
ALTER TABLE TABLE1
ALTER Column1
CHECK (Column2 = 'y')
Run Code Online (Sandbox Code Playgroud)
但这似乎并没有奏效.有没有办法像这样做,还是有更好的方法解决这个问题?任何正确方向的帮助都会很棒.
如果你想要求col1为null,除非col2是'y',你可以将你的CHECK约束编写为:
col2 = 'y' OR col1 IS NULL
Run Code Online (Sandbox Code Playgroud)
如果您还需要col1在col2'y' 时必须具有值,则可以将约束写为:
(col2 = 'y' AND col1 IS NOT NULL) OR (col2 != 'y' AND col1 IS NULL)
Run Code Online (Sandbox Code Playgroud)
你应该把它写成表约束,顺便说一句.我不认为允许列约束引用其他列.(但是列约束只是编写表约束的另一种方式,所以你不要通过编写表约束来丢失任何东西.)