5

(これが重複した投稿である場合は申し訳ありませんが、この問題の例が見つからないようです)

次のような4列のmysqlテーブルがあります。

SomeTable
=========
ID (int)
name (varchar(255))
column1 (varchar(255))
column2 (double)

ここでやりたいことは、null 値を持つ列 (column1 または column2) が常に 1 つになるように制約を追加することです。私は次のことを試しました:

ALTER TABLE mytable 
    ADD CHECK (
        (column1 IS NOT NULL && column2 IS NULL) || 
        (column2 IS NOT NULL && column1 IS NULL)
    )

しかし、次のようなケースがまだある可能性があるため、機能していないようです。

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

CASE2:
------
name: bla
column1: somevalue
column2: 123

case1 と case2 を試したときにエラーが発生するようにするにはどうすればよいですか?

(さらに、記憶がよければ、使用した拘束を短くすることができますが、どのように行われたか思い出せません。誰かが私を助けてくれたら嬉しいです!)

4

1 に答える 1