小编Zag*_*r23的帖子

mysql 检查约束,其中两列之一应为空

(对不起,如果这是一个重复的帖子,但我似乎找不到这个问题的例子)

我有一个有 4 列的 mysql 表,如下所示:

SomeTable
=========
ID (int)
name (varchar(255))
column1 (varchar(255))
column2 (double)
Run Code Online (Sandbox Code Playgroud)

我现在想要做的是添加一个约束,以便始终有一列(column1 或 column2)具有空值。我尝试了以下方法:

ALTER TABLE mytable 
    ADD CHECK (
        (column1 IS NOT NULL && column2 IS NULL) || 
        (column2 IS NOT NULL && column1 IS NULL)
    )
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用,因为我仍然可以遇到这样的情况:

CASE1:
------
name: bla
column1: null
column2: null

CASE2:
------
name: bla
column1: somevalue
column2: 123
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它工作,以便在我尝试 case1 和 case2 时出现错误?

(另外:如果我没记错的话:我使用的约束可以缩短,但我不记得它是如何完成的。所以如果有人帮助我,我会很高兴!)

mysql check-constraint

5
推荐指数
1
解决办法
3139
查看次数

标签 统计

check-constraint ×1

mysql ×1